8
In Anbetracht dieser Strukturen:Ist diese Verwendung von Unions in C gültig/konform?
typedef struct {
//[...]
} StructA;
typedef struct {
StructA a;
//[...]
} StructB;
typedef union {
StructA a;
StructB b;
} Union;
Sind die beiden Zugriffsmethoden unter gleichwertig und nicht undefiniert?
Union u;
memcpy(&u.b, /*...*/); //Pretend I populated StructB here
u.a; // Method 1
u.b.a; // Method 2
Beachten Sie, dass StructA zufällig das erste Mitglied von StructB ist.
Ich entdeckte dies in einer Codebase, die funktioniert, ich frage mich nur, ob es Standard ist oder wenn es irgendwelche Alignments gibt.