Liste des Groupes | Revenir à cl c |
On 5/3/25 20:37, Keith Thompson wrote:Lawrence D'Oliveiro <ldo@nz.invalid> writes:>On Sat, 3 May 2025 01:14:46 -0700, Andrey Tarasevich wrote:Virtually every C project relies on assignment of structures.>
Passing-returning structs by value might be more rare (although
perfectly valid and often appropriate too), but assignment...
assignment is used by everyone everywhere without even giving it a
second thought.
There is a caveat, to do with alignment padding: will this always have a
defined value?
I don't believe so. In a quick look, I don't see anything in
the standard that explicitly addresses this, but I believe that a
conforming implementation could implement structure assignment by
copying the individual members, leaving any padding in the target
undefined.
"When a value is stored in an object of structure or union type,
including in a member object, the bytes of the object representation
that correspond to any padding bytes take unspecified values.56)"
(6.2.6.1p6).
>
That refers to footnote 56, which says "Thus, for example, structure
assignment need not copy any padding bits."
Finally, why would you care?>
The fact that an implementation does not have to do the equivalent of
memcpy() to perform a struct copy means that successful assignment
cannot be checked by using memcmp().
Les messages affichés proviennent d'usenet.