This third edition cancels and replaces the second edition, ISO/IEC 9899:1999, as corrected by ISO/IEC 9899:1999/Cor 1:2001, ISO/IEC 9899:1999/Cor 2:2004, and ISO/IEC 9899:1999/Cor 3:2007. Major changes from the previous edition include:
— conditional (optional) features (including some that were previously mandatory)
CodePudding user response:
Conditional (optional) features are features that are not necessary supported by C compiler implementations as for example variable length arrays or complex types.
CodePudding user response:
C 2018 6.10.8.3 1 lists the conditional feature macros, which reveal the conditional features:
__STDC_ANALYZABLE__
The integer constant1
, intended to indicate conformance to the specifications in Annex L (Analyzability).
__STDC_IEC_559__
The integer constant1
, intended to indicate conformance to the specifications in Annex F (IEC 60559 floating-point arithmetic).
__STDC_IEC_559_COMPLEX__
The integer constant1
, intended to indicate adherence to the specifications in Annex G (IEC 60559 compatible complex arithmetic).
__STDC_LIB_EXT1__
The integer constant201710L
, intended to indicate support for the extensions defined in Annex K (Bounds-checking interfaces).
__STDC_NO_ATOMICS__
The integer constant1
, intended to indicate that the implementation does not support atomic types (including the_Atomic
type qualifier) and the<stdatomic.h>
header.
__STDC_NO_COMPLEX__
The integer constant1
, intended to indicate that the implementation does not support complex types or the<complex.h>
header.
__STDC_NO_THREADS__
The integer constant1
, intended to indicate that the implementation does not support the<threads.h>
header.
__STDC_NO_VLA__
The integer constant1
, intended to indicate that the implementation does not support variable length arrays or variably modified types.