You copied the Doc URL to your clipboard.

GNU extensions to the C and C++ languages

GNU provides many extensions to the C and C++ languages, and the ARM compiler supports many of these extensions. In GNU mode, all the GNU extensions to the relevant source language are available. Some GNU extensions are also available when you compile in a nonstrict mode.

To compile in GNU mode, use --gnu.

The following Standard C99 features are supported as GNU extensions in C90 and C++ when GNU mode is enabled:

  • compound literals

  • designated initializers

  • elements of an aggregate initializer for an automatic variable are not required to be constant expressions

See Which GNU language extensions are supported by the ARM Compiler.

The asm keyword is a Standard C++ feature that is supported as a GNU extension in C90 when GNU mode is enabled.

The following features are not part of any ISO standard but are supported as GNU extensions in either C90, C99, or C++ modes, when GNU mode is enabled:

  • alternate keywords (C90, C99, C++)

  • case ranges (C90, C99, C++)

  • character escape sequence '\e' for escape character <ESC> (ASCII 27), (C90, C99, C++)

  • dollar signs in identifiers (C90, C99, C++)

  • labels as values (C90, C99 and C++)

  • omission of middle operand in conditional statement if result is to be same as the test (C90, C99, C++)

  • pointer arithmetic on void pointers and function pointers (C90 and C99 only)

  • statement expressions (C90, C99 and C++)

  • union casts (C90 and C99 only)

  • unnamed fields in embedded structures and unions (C90, C99 and C++)

  • zero-length arrays (C90 and C99 only).