Bei der Übersetzung mit dem C/C++-Compiler in SDF-Umgebung (Anweisungen COMPILE, CHECK-SYNTAX, PREPROCESS) werden abhängig vom gewählten Sprachmodus und von der Eingabe weiterer Optionen Präprozessor-Makros und -Prädikate vordefiniert.
Bei ein paar Makros können die Werte nicht verändert werden. Es geht weder auf der Kommandozeile noch per #define
oder #undef
in der Source. Die betroffenen Makros sind: __cplusplus
, __STDC__
, __STDC_VERSION__
und __SNI__STDCplusplus
.
Vordefinierte Präprozessor-Makros (Defines)
Die im Folgenden angegeben Optionen sind, sofern nicht explizit anders erwähnt, Bestandteil der Anweisung MODIFY-SOURCE-PROPERTIES.
_BOOL | in den Sprachmodi C++ V3, C++ 2017 und C++ 2020 bei der Option KEYWORD-BOOL=*YES |
| immer gesetzt |
| in allen C++-Sprachmodi: == 1 im Cfront-C++-Modus |
| in allen C++-Sprachmodi |
| Mehrere Defines, die im C++-Standard beschrieben sind. Sie werden gesetzt, wenn das betroffene Sprach-Feature im aktuellen Sprachmodus unterstützt wird. |
| im Sprachmodus Cfront-C++ |
__EDG_NO_IMPLICIT_INCLUSION | |
in den Sprachmodi C++ V3, C++ 2017 und C++ 2020, wenn im Rahmen der Template-Instanziierung implizites Inkludieren mit der Option IMPLICIT-INCLUDE=*NO ausgeschaltet wurde | |
| immer gesetzt |
| immer gesetzt |
| Option FP-ARITHMETICS=*IEEE der Anweisung MODIFY-MODULE-PROPERTIES |
| immer gesetzt |
| immer gesetzt |
| wird im Sprachmodus C++ 2020 vom Compiler auf den Wert |
| |
Option LITERAL-ENCODING=*ASCII[-FULL] | |
| |
Option LITERAL-ENCODING=*EBCDIC[-FULL]/*NATIVE | |
| Option LONGLONG=*YES |
| |
== 1 bei der Option SPECIALIZATION=*OLD | |
| Ist definiert, wenn C-NAMES=*SHORT angegeben wurde |
| Option SIGNED-CHARACTER=*YES |
| immer gesetzt |
| in allen C-Modi und im Cfront-C++-Modus |
| immer gesetzt |
| nie gesetzt (reserviert für Übersetzung in POSIX-Umgebung) |
| immer gesetzt |
| in allen C++-Sprachmodi: == 0 in den erweiterten Sprachmodi (STRICT=*NO) |
| immer gesetzt |
| nie gesetzt (reserviert für Übersetzung in POSIX-Umgebung) |
| immer gesetzt: == 0 in den erweiterten Sprachmodi (STRICT=*NO) == 1 in den strikten Sprachmodi (STRICT=*YES) |
| immer gesetzt |
| immer gesetzt |
| immer gesetzt |
| immer gesetzt |
| |
immer gesetzt == 8U | |
| immer gesetzt |
| immer gesetzt |
| im K&R-C-Modus undefiniert == 199409L in den Sprachmodi C89, Cfront-C++ und C++ V3 == 201112L in den Sprachmodi C11, C++ 2017 und C++ 2020 |
| im K&R-C-Modus undefiniert == 199409L im Sprachmodus C89 und in allen C++ Sprachmodi == 201112L im Sprachmodus C11 |
| in den strikten Sprachmodi (STRICT=*YES) |
| Option KEYWORD-WCHAR=*YES (Voreinstellung in den Modi C++ V3, C++ 2017 und C++ 2020) |
| Option KEYWORD-WCHAR=*YES (Voreinstellung in den Modi C++ V3, C++ 2017 und C++ 2020) |
Vordefinierte Präprozessor-Prädikate (#assert)
| immer gesetzt |
| bei Generierung von /390-Code |
| bei Generierung von /390-Code |
| immer gesetzt |