Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| 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> |
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
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