Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #9918

Re: Bit-field union bug

From Quentin Pope <qp19433@hotmail.NOSPAM.com>
Newsgroups comp.lang.c
Subject Re: Bit-field union bug
Date 2011-09-03 19:06 +0000
Organization Aioe.org NNTP Server
Message-ID <j3ttr8$uil$1@speranza.aioe.org> (permalink)
References <j3m8np$8gv$1@speranza.aioe.org> <ln62ldtgdq.fsf@nuthaus.mib.org>

Show all headers | View raw


On Wed, 31 Aug 2011 14:34:09 -0700, Keith Thompson wrote:
> Quentin Pope <qp19433@hotmail.NOSPAM.com> writes:
>> On my compiler, the output of "sizeof(foo)" of the following is 8,
>> instead of 4.
>>
>> Which indicates that the compiler is aligning the union at the next int
>> boundary, rather than coalescing it with "proto".
>>
>> I think this is a bug.
>>
>>
>> struct s_skip_ind {
>>    unsigned skip_ind:4;
>> };
>>
>> struct s_trans_id {
>>    unsigned trans_val:3;
>>    unsigned trans_id:1;
>> };
>>
>> struct foo {
>>    unsigned proto:4;
>>    union {
>>       s_skip_ind skip_ind;
>>       s_trans_id trans_id;
>>    };
>> };
> 
> Whether it's a bug or not, it's not a violation of the C standard.
> Compilers can legally insert arbitrary padding between any two members
> of a struct, or after the last one.
> 
> I think I've seen some compilers that use the declared type of a bit
> field to determine its alignment; for example, given
>     unsigned char  x:1
>     unsigned short y:1
>     unsigned int   z:1
> x, y, and z might be aligned on 1-byte, 2-byte, and 4-byte boundaries,
> respectively.  I don't think there's any support for this in the
> standard, which only requires support for bit fields of types int,
> signed int, unsigned int, and (new in C99) _Bool.

I see.

In this case, is there an equivalent of the offsetOf() function for 
bitfield members, to allow programmers to determine whether or not 
bitfields have been packed?

Cheers
QP

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Bit-field union bug Quentin Pope <qp19433@hotmail.NOSPAM.com> - 2011-08-31 21:23 +0000
  Re: Bit-field union bug Keith Thompson <kst-u@mib.org> - 2011-08-31 14:34 -0700
    Re: Bit-field union bug Quentin Pope <qp19433@hotmail.NOSPAM.com> - 2011-09-03 19:06 +0000
      Re: Bit-field union bug Ian Collins <ian-news@hotmail.com> - 2011-09-04 08:19 +1200
        Re: Bit-field union bug Quentin Pope <qp19433@hotmail.NOSPAM.com> - 2011-09-03 21:12 +0000
          Re: Bit-field union bug Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-09-03 22:30 +0100
            Re: Bit-field union bug Ian Collins <ian-news@hotmail.com> - 2011-09-04 11:01 +1200
              Re: Bit-field union bug Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-09-04 00:37 +0100
                Re: Bit-field union bug Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2011-09-06 00:36 +0300
            Re: Bit-field union bug Tim Rentsch <txr@alumni.caltech.edu> - 2012-01-24 12:23 -0800
              Re: Bit-field union bug Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-01-24 21:15 +0000
  Re: Bit-field union bug Ian Collins <ian-news@hotmail.com> - 2011-09-01 09:36 +1200
  Re: Bit-field union bug jacob navia <jacob@spamsink.net> - 2011-08-31 23:38 +0200
  Re: Bit-field union bug Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2011-08-31 15:42 -0600
    Re: Bit-field union bug Seebs <usenet-nospam@seebs.net> - 2011-08-31 21:57 +0000
      Re: Bit-field union bug James Kuyper <jameskuyper@verizon.net> - 2011-08-31 18:21 -0400
        Re: Bit-field union bug Seebs <usenet-nospam@seebs.net> - 2011-09-01 02:45 +0000
          Re: Bit-field union bug James Kuyper <jameskuyper@verizon.net> - 2011-09-01 06:37 -0400
        Re: Bit-field union bug Kenneth Brody <kenbrody@spamcop.net> - 2011-09-01 14:19 -0400
          Re: Bit-field union bug James Kuyper <jameskuyper@verizon.net> - 2011-09-01 14:46 -0400
      Re: Bit-field union bug Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2011-09-01 15:34 +0300
        Re: Bit-field union bug Keith Thompson <kst-u@mib.org> - 2011-09-01 07:24 -0700
  Re: Bit-field union bug James Kuyper <jameskuyper@verizon.net> - 2011-08-31 17:55 -0400
  Re: Bit-field union bug "Scott Fluhrer" <sfluhrer@ix.netcom.com> - 2011-08-31 19:01 -0400
  Re: Bit-field union bug Peter Nilsson <airia@acay.com.au> - 2011-08-31 16:03 -0700
    Re: Bit-field union bug David Thompson <dave.thompson2@verizon.net> - 2011-09-06 01:13 -0400
      Re: Bit-field union bug Tim Rentsch <txr@alumni.caltech.edu> - 2012-01-24 12:17 -0800
        Re: Bit-field union bug ec429 <ec429@cam.ac.uk> - 2012-01-25 00:13 +0000
          Re: Bit-field union bug Kaz Kylheku <kaz@kylheku.com> - 2012-01-25 00:36 +0000
          Re: Bit-field union bug Tim Rentsch <txr@alumni.caltech.edu> - 2012-01-31 14:54 -0800
  Re: Bit-field union bug Andrey Tarasevich <andreytarasevich@hotmail.com> - 2011-09-01 16:27 -0700

csiph-web