GNU provides many extensions to the C and C++ languages and many of these extensions are supported by the ARM compiler. 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
The following Standard C99 features are supported as GNU extensions in C90 and C++ when GNU mode is enabled:
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 Compilerhttp://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka14717.html.
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).