(gcc.info.gz) Unnamed Fields
Info Catalog
(gcc.info.gz) Pragmas
(gcc.info.gz) C Extensions
(gcc.info.gz) Thread-Local
5.53 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.
Unless `-fms-extensions' is used, the unnamed field must be a
structure or union definition without a tag (for example, `struct { int
a; };'). If `-fms-extensions' is used, the field may also be a
definition with a tag such as `struct foo { int a; };', a reference to
a previously defined structure or union such as `struct foo;', or a
reference to a `typedef' name for a previously defined structure or
union type.
Info Catalog
(gcc.info.gz) Pragmas
(gcc.info.gz) C Extensions
(gcc.info.gz) Thread-Local
automatically generated by
info2html