Mail Archives: cygwin/1998/08/12/09:37:47
"Tom Stokes" <tstokes AT pacbell DOT net> writes:
> The size of this structure is 12 which is wrong. What am I missing?
[...]
try the following (compile and execute or compile to .s):
------------------------------------------
typedef struct HeaderTag
{
unsigned long HeaderLength;
char PackingType __attribute__ ((packed));
unsigned short NumRows __attribute__ ((packed));
unsigned short PackedSize __attribute__ ((packed));
} __attribute__ ((packed)) HeaderType;
#define offset(f) (int)&(((HeaderType*)0)->f)
int main(void)
{
printf("%d,%d,%d,%d\n",offset(PackingType),offset(NumRows),
offset(PackedSize),sizeof(HeaderType));
return 0;
}
--------------------------------------------
Notice the added attribute after the closing brace. Without that the
whole structure is padded with 3 additional bytes.
ciao
Andreas
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request AT cygnus DOT com" with one line of text: "help".
- Raw text -