Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Vordefinierte Präprozessornamen

&pagelevel(3)&pagelevel

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.

_BOOLin den Sprachmodi C++ V3, C++ 2017 und C++ 2020 bei der Option KEYWORD-BOOL=*YES

__CGLOBALS_PRAGMA

immer gesetzt

__cplusplus

in allen C++-Sprachmodi:

== 1 im Cfront-C++-Modus
== 2 im erweiterten C++ V3-Modus
== 199612L im strikten C++ V3-Modus
== 201703L im C++ 2017-Modus
== 202002L im C++ 2020-Modus

c_plusplus

in allen C++-Sprachmodi

__cpp_...

Mehrere Defines, die im C++-Standard beschrieben sind. Sie werden gesetzt, wenn das betroffene Sprach-Feature im aktuellen Sprachmodus unterstützt wird.

__CFRONT_V3

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

__EXISTCGLOB

immer gesetzt

__HALF_TAG_LOOKUP

immer gesetzt

_IEEE

Option FP-ARITHMETICS=*IEEE der Anweisung MODIFY-MODULE-PROPERTIES

LANGUAGE_C

immer gesetzt

_LANGUAGE_C

immer gesetzt

_LIBCPP_STD_VER

wird im Sprachmodus C++ 2020 vom Compiler auf den Wert 17 gesetzt
wird im Sprachmodus C++ 2017 von Bibliotheks-Headern auf den Wert 17 gesetzt

__LITERAL_ENCODING_ASCII


Option LITERAL-ENCODING=*ASCII[-FULL]

__LITERAL_ENCODING_EBCDIC


Option LITERAL-ENCODING=*EBCDIC[-FULL]/*NATIVE

_LONGLONG

Option LONGLONG=*YES

__OLD_SPECIALIZATION_SYNTAX


== 1 bei der Option SPECIALIZATION=*OLD

__SHORT_NAMES

Ist definiert, wenn C-NAMES=*SHORT angegeben wurde

__SIGNED_CHARS__

Option SIGNED-CHARACTER=*YES

__SMALL_VA_DCL

immer gesetzt

__SNI

in allen C-Modi und im Cfront-C++-Modus

__SNI_HOST_BS2000

immer gesetzt

__SNI_HOST_BS2000_POSIX

nie gesetzt (reserviert für Übersetzung in POSIX-Umgebung)

__SNI_PRINTF_CHECK

immer gesetzt

__SNI__STDCplusplus

in allen C++-Sprachmodi:

== 0 in den erweiterten Sprachmodi (STRICT=*NO)
== 1 in den strikten Sprachmodi (STRICT=*YES)

__SNI_TARG_BS2000

immer gesetzt

__SNI_TARG_BS2000_POSIX

nie gesetzt (reserviert für Übersetzung in POSIX-Umgebung)

__STDC__

immer gesetzt:

== 0 in den erweiterten Sprachmodi (STRICT=*NO)

== 1 in den strikten Sprachmodi (STRICT=*YES)

__STDC_HOSTED__

immer gesetzt

__STDC_NO_ATOMICS__

immer gesetzt

__STDC_NO_COMPLEX__

immer gesetzt

__STDC_NO_THREADS__

immer gesetzt

__STDCPP_DEFAULT_NEW_ALIGNMENT__


immer gesetzt

== 8U

__STDC_UTF_16__

immer gesetzt

__STDC_UTF_32__

immer gesetzt

__STDC_VERS_CRTE__

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

__STDC_VERSION__

im K&R-C-Modus undefiniert

== 199409L im Sprachmodus C89 und in allen C++ Sprachmodi

== 201112L im Sprachmodus C11

_STRICT_STDC

in den strikten Sprachmodi (STRICT=*YES)

_WCHAR_T

Option KEYWORD-WCHAR=*YES (Voreinstellung in den Modi C++ V3, C++ 2017 und C++ 2020)
Wenn diese Option nicht gesetzt ist (z.B. in den C-Modi oder im Cfront-C++-Modus), wird _WCHAR_T in diversen Standard-Includes definiert, um ein typedef für wchar_t abzusetzen.

_WCHAR_T_KEYWORD

Option KEYWORD-WCHAR=*YES (Voreinstellung in den Modi C++ V3, C++ 2017 und C++ 2020)

Vordefinierte Präprozessor-Prädikate (#assert)

data_model(bit32)

immer gesetzt

cpu(7500)

bei Generierung von /390-Code

machine(7500)

bei Generierung von /390-Code

system(bs2000)

immer gesetzt