This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: packed structures


"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".


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]