The following structure, union, enum, and bitfield extensions
are supported:
In C, the element type
of a file-scope array can be an incomplete struct or union type.
The element type must be completed before its size is needed, for
example, if the array is subscripted. If the array is not extern,
the element type must be completed by the end of the compilation.
The final semicolon preceding the closing brace } of
a struct or union specifier can be omitted.
A warning is issued.
An initializer expression that is a single value
and is used to initialize an entire static array, struct,
or union, does not have to be enclosed in braces. ISO
C requires the braces.
An extension is supported to enable constructs similar
to C++ anonymous unions, including the following:
not only anonymous unions but also anonymous structs
are permitted. The members of anonymous structs are promoted to
the scope of the containing struct and looked up like
ordinary members.
they can be introduced into the containing struct by
a typedef name. That is, they do not have to be declared
directly, as is the case with true anonymous unions.
a tag can be declared but only in C mode.
To enable support for anonymous structures and unions, you
must use the anon_unions pragma.
An extra comma is permitted at the end of an enum list
but a remark is issued.
enum tags can be incomplete. You can
define the tag name and resolve it later, by specifying the brace-enclosed
list.
The values of enumeration constants can be given
by expressions that evaluate to unsigned quantities that fit in
the unsigned int range but not in the int range.
For example:
/* When ints are 32 bits: */
enum a { w = -2147483648 }; /* No error */
enum b { x = 0x80000000 }; /* No error */
enum c { y = 0x80000001 }; /* No error */
enum d { z = 2147483649 }; /* Error */
Bit fields can have base types that are enum types
or integral types besides int and unsigned int.
This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.
ARM websites use two types of cookie: (1) those that enable the site to function and perform as required; and (2) analytical cookies which anonymously track visitors only while using the site. If you are not happy with this use of these cookies please review our Privacy Policy to learn how they can be disabled. By disabling cookies some features of the site will not work.