GNU C provides several language features not found in ISO standard C. (The -pedantic option directs GCC to print a warning message if any of these features is used.) To test for the availability of these features in conditional compilation, check for a predefined macro __GNUC__, which is always defined under GCC.
These extensions are available in C and Objective-C. Most of them are also available in C++. C++ ExtensionsExtensions to the C++ Language, for extensions that apply only to C++.
Some features that are in ISO C99 but not C90 or C++ are also, as extensions, accepted by GCC in C90 mode and in C++.
:: _statement-exprs:
:: _local-labels:
:: _labels-as-values:
:: _nested-functions:
:: _constructing-calls:
:: _typeof:
:: _conditionals:
:: ___int128:
:: _long-long:
:: _complex:
:: _floating-types:
:: _half-precision:
:: _decimal-float:
:: _hex-floats:
:: _fixed-point:
:: _named-address-spaces:
:: _zero-length:
:: _empty-structures:
:: _variable-length:
:: _variadic-macros:
:: _escaped-newlines:
:: _subscripting:
:: _pointer-arith:
:: _pointers-to-arrays:
:: _initializers:
:: _compound-literals:
:: _designated-inits:
:: _case-ranges:
:: _cast-to-union:
:: _mixed-declarations:
:: _function-attributes:
:: _variable-attributes:
:: _type-attributes:
:: _label-attributes:
:: _attribute-syntax:
:: _function-prototypes:
:: _c++-comments:
:: _dollar-signs:
:: _character-escapes:
:: _alignment:
:: _inline:
:: _volatiles:
:: _using-assembly-language-with-c:
:: _alternate-keywords:
:: _incomplete-enums:
:: _function-names:
:: _return-address:
:: _vector-extensions:
:: _offsetof:
:: ___sync-builtins:
:: ___atomic-builtins:
:: _integer-overflow-builtins:
:: _x86-specific-memory-model-extensions-for-transactional-memory:
:: _object-size-checking:
:: _pointer-bounds-checker-builtins:
:: _cilk-plus-builtins:
:: _other-builtins:
:: _target-builtins:
:: _target-format-checks:
:: _pragmas:
:: _unnamed-fields:
:: _thread-local:
:: _binary-constants: