This chapter describes the language extensions supported by the compiler:
Preprocessor extensions
#assert
#include_next
#unassert
#warning
C99 language features available in C90
// comments
Subscripting struct
Flexible array members
C99 language features available in C++ and C90
Variadic macros
long long
restrict
Hexadecimal floats
Standard C language extensions
Constant expressions
Array and pointer extensions
Block scope function declarations
Dollar signs in identifiers
Top-level declarations
Benign redeclarations
External entities
Function prototypes
Standard C++ language extensions
? operator
Declaration of a class member
friend
Read/write constants
Scalar type constants
Specialization of nonmember function templates
Type conversions
Standard C and Standard C++ language extensions
Address of a register variable
Arguments to functions
Anonymous classes, structures and unions
Assembler labels
Empty declaration
Hexadecimal floating-point constants
Incomplete enums
Integral type extensions
Label definitions
Long float
Nonstatic local variables
Structure, union, enum, and bitfield extensions
GNU extensions to the C and C++ languages.
For additional reference material on the compiler see also:
Standard C Implementation Definition
Standard C++ Implementation Definition
C and C++ Compiler Implementation Limits.