Beim Aufruf des Compilers mit cc
, c11
, c89
oder CC
sind abhängig vom gewählten Kommando und von der Eingabe bestimmter 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)
| in den Sprachmodi C++ V3, C++ 2017 und C++ 2020 bei Option |
| immer gesetzt |
| in allen C++-Sprachmodi: == 1 im Cfront-C++-Modus |
| in allen C++-Sprachmodi |
| im Cfront-C++-Modus |
| |
in den Sprachmodi C++ V3, C++ 2017 und C++ 2020 , wenn im Rahmen der Template-Instanziierung implizites Inkludieren ausgeschaltet wurde | |
| immer gesetzt |
| immer gesetzt |
| Option |
| immer definiert |
| immer definiert |
| wird im Sprachmodus C++ 2020 vom Compiler auf den Wert |
| |
Option | |
| |
Option | |
| Option |
__OLD_SPECIALIZATION_SYNTAX | |
== 1 bei der Option | |
| immer gesetzt |
| immer gesetzt |
| Ist definiert, wenn |
| Option |
| immer gesetzt |
| in allen C-Modi und im Cfront-C++-Modus |
| nie gesetzt (reserviert für Übersetzung in BS2000-Umgebung (SDF)) |
| immer gesetzt |
| immer gesetzt |
| in allen C++-Sprachmodi: == 0 in den erweiterten Sprachmodi ( |
| nie gesetzt (reserviert für Übersetzung in BS2000-Umgebung (SDF)) |
| immer gesetzt |
| immer gesetzt: == 0 in den erweiterten Sprachmodi ( |
| 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 in dem Sprachmodus C89 und in allen C++-Sprachmodi == 201112L in dem Sprachmodus C11 |
| in den strikten Sprachmodi ( |
| Option |
| Option |
| beim Aufrufkommando |
Vordefinierte Präprozessor-Prädikate (#assert)
| immer gesetzt |
| bei Generierung von /390-Code |
| bei Generierung von /390-Code |
| immer gesetzt |