 |
Unnamed struct/union Fields within structs/unions |
For compatibility with other compilers, GCC allows you to define
a structure or union that contains, as fields, structures and unions
without names. For example:
struct {
int a;
union {
int b;
float c;
};
int d;
} foo;
In this example, the user would be able to access members of the unnamed
union with code like foo.b
. Note that only unnamed structs and
unions are allowed, you may not have, for example, an unnamed
int
.
You must never create such structures that cause ambiguous field definitions.
For example, this structure:
struct {
int a;
struct {
int a;
};
} foo;
It is ambiguous which a is being referred to with foo.a
.
Such constructs are not supported and must be avoided. In the future,
such constructs may be detected and treated as compilation errors.