On Tue, Nov 28, 2006 at 11:36:19PM -0800, Ian Lance Taylor wrote:
> Or you can use constructor expressions to make this slightly more
> elegant, though I retain the assumptions about type sizes:
>
> char *foo1(char* buf){
> memcpy(buf, (char[]) { 42 }, 1);
> buf += 1;
> memcpy(buf, (short[]) { 0xfeed }, 2);
> buf += 2;
> memcpy(buf, (int[]) { 0x12345678 }, 4);
> buf += 4;
> memcpy(buf, (int[]) { 0x12345678 }, 4);
> buf += 4;
> return buf;
> }
Or even use mempcpy to make it even more compact:
char *
foo1 (char *buf)
{
buf = mempcpy (buf, (char[]) { 42 }, 1);
buf = mempcpy (buf, (short[]) { 0xfeed }, 2);
buf = mempcpy (buf, (int[]) { 0x12345678 }, 4);
buf = mempcpy (buf, (int[]) { 0x12345678 }, 4);
return buf;
}
Jakub