typedef struct { unsigned char a __attribute__ ((packed)); unsigned short b __attribute__ ((packed)); } three_byte_t; unsigned char f (void) { return 0xab; } unsigned short g (void) { return 0x1234; } main () { three_byte_t three_byte; three_byte.a = f (); three_byte.b = g (); if (three_byte.a != 0xab || three_byte.b != 0x1234) abort (); exit (0); }