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