packed structures
Andreas Degert
ad@papyrus.hamburg.com
Wed Aug 12 02:31:00 GMT 1998
"Tom Stokes" <tstokes@pacbell.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@cygnus.com" with one line of text: "help".
More information about the Cygwin
mailing list