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


Groups > comp.lang.c > #9850

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

From "J. J. Farrell" <jjf@bcs.org.uk>
Newsgroups comp.lang.c
Subject Re: Compliant way to use offsetof for a field within a field?
Date 2011-09-02 00:34 +0100
Organization A noiseless patient Spider
Message-ID <j3p4pm$7eq$1@dont-email.me> (permalink)
References <fbfb883a-2d39-4aa4-832f-de302fac65c7@j4g2000prh.googlegroups.com> <4E5FB187.7030305@verizon.net>

Show all headers | View raw


James Kuyper wrote:
> On 09/01/2011 11:28 AM, skillzero@gmail.com wrote:
>> Is there a compliant way of getting the offset of a field within a
>> field? I'm mainly using this to do compile-time checks that fields are
>> at the offset I expect them. I'm using offsetof( NameOfStruct,
>> field1.field2 ) now and this works, but with some compilers, I'm
>> getting a warning about "Using extended field designator is an
>> extension". Here's an example:
>>
>> typedef struct
>> {
>>     uint8_t        x;
>>     uint8_t        y;
>>     struct
>>     {
>>         uint8_t    z;
>>
>>     }   fields;
>>
>> }   Test;
>>
>> compile_time_assert( offsetof( Test, x )        == 0 ); // Works
> 
> There's not much point in testing that one: on a conforming
> implementation of C, it's guaranteed to be 0.

One common reason for testing that is to protect against someone later 
modifying the structure by putting something in front of x. It's 
certainly not needed if the purpose is to check that assumptions about 
padding are valid; but if the purpose is to check that certain fields in 
the structure match certain externally defined data, then it protects 
against changes by people who don't understand all the implications of 
what they're doing.

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