Next: Incomplete Types, Previous: Structure Constructors, Up: Structures [Contents][Index]
A structure or a union can contain, as fields, unnamed structures and unions. Here’s an example:
struct { int a; union { int b; float c; }; int d; } foo;
You can access the fields of the unnamed union within foo
as if they
were individual fields at the same level as the union definition:
foo.a = 42;
foo.b = 47;
foo.c = 5.25; // Overwrites the value in foo.b
.
foo.d = 314;
Avoid using field names that could cause ambiguity. For example, with this definition:
struct { int a; struct { int a; float b; }; } foo;
it is impossible to tell what foo.a
refers to. GNU C reports
an error when a definition is ambiguous in this way.