Date: Tue, 4 Nov 1997 08:19:29 +0100 From: Christoph Kukulies <kuku@gilberto.physik.RWTH-Aachen.DE> To: Terry Lambert <tlambert@primenet.com> Cc: John Milford <jwm@CSUA.Berkeley.EDU>, kuku@gilberto.physik.RWTH-Aachen.DE, freebsd-hackers@freefall.freebsd.org Subject: Re: gcc and bitfields Message-ID: <19971104081929.11224@gil.physik.rwth-aachen.de> In-Reply-To: <199711040230.TAA14861@usr09.primenet.com>; from Terry Lambert on Tue, Nov 04, 1997 at 02:30:23AM %2B0000 References: <199711021618.IAA02063@soda.CSUA.Berkeley.EDU> <199711040230.TAA14861@usr09.primenet.com>
index | next in thread | previous in thread | raw e-mail
On Tue, Nov 04, 1997 at 02:30:23AM +0000, Terry Lambert wrote:
> > By default gcc pads structures to make make the size a multiple of 4 bytes.
> > Try:
> >
> > struct C_OPEN {
> > int a;
> > int b;
> > unsigned xdt:1;
> > unsigned reserved:15;
> > } __attribute__ ((packed));
>
>
> Or you can keep the code portable to DOS by not using the bogus
> GNUish namespace intrusion "__attribute__":
>
> #pragma pack(1)
> struct C_OPEN {
> int a;
> int b;
> unsigned xdt:1;
> unsigned reserved:15;
> };
> #pragma pack(4)
> /*
> * GCC will take "pack()" (no arguments) to reset; I don't remember
> * if MSVC++ can, however... you should check, and use the no argument
> * version, if possible.
> */
>
>
> Also:
> cd /sys/i386/include
> grep pragma *.h
>
> ...there's already precedent favoring "#pragma pack(<N>)" over
> "__attribute__" in FreeBSD.
>
Yeah, I prefer that also.
But:
# grep __attrib *
segments.h: unsigned sd_lobase:24 __attribute__ ((packed));
segments.h: unsigned rd_base:32 __attribute__ ((packed)); /* base address */
> Terry Lambert
> terry@lambert.org
> ---
> Any opinions in this posting are my own and not those of my present
> or previous employers.
--
--Chris Christoph P. U. Kukulies kuku@gil.physik.rwth-aachen.de
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19971104081929.11224>
