Node:Unnamed Fields, Next:Thread-Local, Previous:Pragmas, Up:C Extensions

### 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.