Andrew Pinski <[EMAIL PROTECTED]> writes:
> Here is how I would write it so you can get the best results:
>
> char *foo(char *buf)
> {
> short temp;
> int temp1;
> *buf++=42;
> temp = 0xfeed;
> memcpy(buf, &temp, sizeof(temp));
> buf+=sizeof(temp);
> temp1 = 0x12345678;
> memcpy(buf, &temp1, sizeof(temp1));
> buf+=sizeof(temp1);
> temp1 = 0x12345678;
> memcpy(buf, &temp1, sizeof(temp1));
> buf+=sizeof(temp1);
> return buf;
> }
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;
}
Ian