tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: style: structures
> Date: Tue, 8 Oct 2024 08:50:00 -0400 (EDT)
> From: Mouse <mouse%Rodents-Montreal.ORG@localhost>
>
> > [...], 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?
C99 Sec. 6.7.2.1 `Structure and union specifiers', clause 13, p. 103:
`A pointer to a structure object, suitably converted, points to its
initial member (or if that member is a bit-field, then to the unit
in which it resides), and vice versa. There may be unnamed
padding within a structure object, but not at its beginning.'
Same text in C11 (clause 14, p. 115), and in C23 (clause 17, p. 104).
But don't use casts for this -- use container_of, which is more
flexible and checks types better than a cast does.
Home |
Main Index |
Thread Index |
Old Index