Re: style: structures

Mouse <[email protected]>
Newsgroups gmane.os.netbsd.devel.userlevel
Message-ID <[email protected]>
>>> [...], using the C standard guaranteed property that the address of
>>> the first member is the address of the structure, allowing to cast
>>> pointers in order to operate whether on the base structure or on
>>> the derived structure?
>> Which standard promises this, and what exactly does it promise?
> K & R, "The C Programming Language", second edition (english
> version), p 213:

> 	                                                      If a
> 	pointer to a structure is cast to the type of a pointer to its
> 	first member, the result refers to the first member.

!  Curious.  I would expect the standards to preserve that promise,
yes, but I haven't yet found anything equivalent in C99.  I've been
searching for things like "first (element|member)" with no success.

But this is not quite what you said (though admittedly "address" is
fuzzy enough it's not clear); the cast may involve significant changes
(for example, the resulting pointer may be larger than the original; I
*think* it might even be smaller, though I'm not sure - very little is
promised about pointer sizes).

Also, is there anything promising that casting back, that casting a
pointer to the type of the first element, which actually points to such
a first element, to a pointer to the containing struct type, returns a
pointer which points to that containing struct?

/~\ The ASCII				  Mouse
\ / Ribbon Campaign
 X  Against HTML		[email protected]
/ \ Email!	     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.