When the C/C++ compiler is used for compilation in the SDF environment (COMPILE, CHECK-SYNTAX, and PREPROCESS statements), some preprocessor macros and assertions are predefined, depending on which language mode is selected and which additional options are specified.
For a few macros the value is fixed. It cannot be changed, neither on the command line nor in the source (via #define
or #undef
). These macros are: __cplusplus
, __STDC__
, __STDC_VERSION__
and __SNI__STDCplusplus
.
Predefined preprocessor macros (defines)
The options specified below are all part of the MODIFY-SOURCE-PROPERTIES statement:
_BOOL | In the language modes C++ V3, C++ 2017 and C++ 2020 with the option KEYWORD-BOOL=*YES |
| Always set |
| In all C++ language modes: == 1 in Cfront C++ mode |
| In all C++ language modes |
| Several defines specified in the C++ standard. They are set when the corresponding feature is supported in the current language mode. |
| In language mode Cfront C++ |
__EDG_NO_IMPLICIT_INCLUSION | |
In the modes C++ V3, C++ 2017 and C++ 2020, if implicit inclusion has been disabled with the option IMPLICIT-INCLUDE=*NO within the framework of template instantiation | |
| Always set |
| Always set |
| Option FP-ARITHMETICS=*IEEE in MODIFY-MODULE-PROPERTIES statement |
| Always set |
| Always set |
| In mode C++ 2020: the compiler will set it to the value |
| |
Option LITERAL-ENCODING=*ASCII[-FULL] | |
| |
Option LITERAL-ENCODING=*EBCDIC[-FULL]/*NATIVE | |
| Option LONGLONG=*YES |
| |
== 1 with the option SPECIALIZATION=*OLD | |
| Is defined, if C-NAMES=*SHORT is specified |
| Option SIGNED-CHARACTER=*YES |
| Always set |
| In all C modes and in Cfront C++ mode |
| Always set |
| Never set (reserved for compilation in POSIX) |
| Always set |
| in all C++ language modes: == 0 in extended language modes (STRICT=*NO) |
| Always set |
| Never set (reserved for compilation in POSIX) |
| Always set: == 0 in extended language modes (STRICT=*NO) |
| Always set |
| Always set |
| Always set |
| Always set |
| |
Always set == 8U | |
| Always set |
| Always set |
| Undefined in K&R C mode == 199409L in language modes C89, Cfront C++ and C++ V3 == 201112L in language modes C11, C++ 2017 and C++ 2020 |
| Undefined in K&R C mode == 199409L in language mode C89 and in all C++ language modes == 201112L in language mode C11 |
| in strict language modes (STRICT=*YES) |
| Option KEYWORD-WCHAR=*YES (default in den language modes C++ V3, C++ 2017 and C++ 2020) |
| Option KEYWORD-WCHAR=*YES (default in language modes C++ V3, C++ 2017 and C++ 2020) |
Predefined preprocessor assertions (#assert)
The options specified below are all part of the MODIFY-SOURCE-PROPERTIES statement:
| Always set |
| On generating /390 code |
| On generating /390 code |
| Always set |