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


Groups > comp.lang.c > #9852

Re: Compliant way to use offsetof for a field within a field?

From Andrey Tarasevich <andreytarasevich@hotmail.com>
Newsgroups comp.lang.c
Subject Re: Compliant way to use offsetof for a field within a field?
Date 2011-09-01 16:38 -0700
Organization A noiseless patient Spider
Message-ID <j3p4vr$8ah$1@dont-email.me> (permalink)
References <fbfb883a-2d39-4aa4-832f-de302fac65c7@j4g2000prh.googlegroups.com>

Show all headers | View raw


On 9/1/2011 8:28 AM, skillzero@gmail.com wrote:
>
> typedef struct
> {
>      uint8_t        x;
>      uint8_t        y;
>      struct
>      {
>          uint8_t    z;
>
>      }   fields;
>
> }   Test;
>
> compile_time_assert( offsetof( Test, x )        == 0 ); // Works
> compile_time_assert( offsetof( Test, y )        == 1 ); // Works
> compile_time_assert( offsetof( Test, fields.z ) == 2 ); // Works, but
> warns about an extension.
>
> Is there a way to do this in a compliant way?

What compiler are you using? Are you sure you are not compiling your 
code as C++ code?

The `offsetof( Test, fields.z )` _is_ the compliant way in C. There are 
no extensions of any kind involved here.

The specification of `offsetof` is C language only requires that 
`&object.member_designator` be an address constant (for some imagginary 
static object `object`). There's no requirement for the 
'member_designator' to designate the immediate member of the structure. 
It is perfectly allowed to use `offsetof` with "deeper" members of the 
struct type.

-- 
Best regards,
Andrey Tarasevich

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


Thread

Compliant way to use offsetof for a field within a field? "skillzero@gmail.com" <skillzero@gmail.com> - 2011-09-01 08:28 -0700
  Re: Compliant way to use offsetof for a field within a field? James Kuyper <jameskuyper@verizon.net> - 2011-09-01 12:23 -0400
    Re: Compliant way to use offsetof for a field within a field? "J. J. Farrell" <jjf@bcs.org.uk> - 2011-09-02 00:34 +0100
  Re: Compliant way to use offsetof for a field within a field? "christian.bau" <christian.bau@cbau.wanadoo.co.uk> - 2011-09-01 10:19 -0700
    Re: Compliant way to use offsetof for a field within a field? Peter Nilsson <airia@acay.com.au> - 2011-09-01 16:31 -0700
  Re: Compliant way to use offsetof for a field within a field? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2011-09-01 16:38 -0700
  Re: Compliant way to use offsetof for a field within a field? Michael Press <rubrum@pacbell.net> - 2011-09-01 22:05 -0700

csiph-web