Vordefinierte Makros
Damit werden die Präprozessormakros vordefinierter ANSI/ISO C99- und Microsoft C++-Implementierungen aufgelistet.
Vom Compiler werden vordefinierte ANSI/ISO C99 C-Präprozessormakros erkannt. Die Microsoft C++-Implementierung bietet weitere Makros. Von diesen Präprozessormakros werden keine Argumente akzeptiert. Sie können nicht neu definiert werden. Für einige der hier aufgeführten vordefinierten Makros sind mehrere Werte definiert.
ANSI-kompatible vordefinierte Makros
Makro |
Beschreibung |
---|---|
__DATE__ |
Das Kompilierungsdatum der aktuellen Quelldatei. Das Datum ist ein Zeichenfolgenliteral des Formats Mmm dd yyyy. Der Monatsname Mmm ist derselbe wie für Daten, die von der in TIME.H deklarierten Bibliotheksfunktion asctime generiert wurden. |
__FILE__ |
Der Name der aktuellen Quelldatei. __FILE__ wird auf ein Zeichenfolgenliteral erweitert. Um sicherzustellen, dass der vollständige Pfad zur Datei angezeigt wird, verwenden Sie /FC (Vollständiger Pfad der Quellcodedatei in Diagnostik). |
__func__ |
Gibt den nicht qualifizierten und nicht verzierten Namen der einschließenden Funktion als ein Array von Zeichen zurück.
|
__LINE__ |
Die Zeilennummer in der aktuellen Quelldatei. Die Zeilennummer ist ein Ganzzahlliteral im Dezimalformat. Sie kann durch eine #line-Direktive geändert werden. |
__STDC__ |
Kennzeichnet die Übereinstimmung mit dem Standard ANSI/ISO C99. Ist nur dann als Ganzzahlliteralkonstante 1 definiert, wenn die Compileroption /Za angegeben ist und Sie keinen C++-Code kompilieren. Andernfalls ist der Wert nicht definiert. |
__TIME__ |
Die aktuellste Kompilierungszeit der aktuellen Quelldatei. Die Zeit ist ein Zeichenfolgenliteral des Formats hh:mm:ss. |
__TIMESTAMP__ |
Das Datum und die Uhrzeit der letzten Änderung der aktuellen Quelldatei, ausgedrückt als Zeichenfolgenliteral im Format Ddd Mmm Date hh:mm:ss yyyy, wobei Ddd für den abgekürzten Wochentag steht und Date für eine ganze Zahl zwischen 1 und 31. |
Microsoft-spezifische vordefinierte Makros
Makro |
Beschreibung |
---|---|
_ATL_VER |
Definiert die ATL-Version, die als Ganzzahlliteral codiert ist. |
__AVX__ |
Definiert, wenn /arch:AVX oder /arch:AVX2 angegeben ist. |
__AVX2__ |
Definiert, wenn /arch:AVX2 angegeben ist. |
_CHAR_UNSIGNED |
Der Standardzeichentyp (char) ist nicht signiert. Definiert, wenn /J angegeben ist. |
__CLR_VER |
Definiert die verwendete Version der Common Language Runtime zum Zeitpunkt der Kompilierung der Anwendung. Der zurückgegebene Wert ein Ganzzahlliteral, das im folgenden Format codiert ist: Mmmbbbbb wobei
|
__cplusplus_cli |
Wird definiert beim Kompilieren mit /clr, /clr:pure oder /clr:safe. Wert von "__cplusplus_cli" ist das Ganzzahlliteral 200406. "__cplusplus_cli" ist während der Übersetzungseinheit wirksam.
|
__cplusplus_winrt |
Wird definiert beim Kompilieren mit der Option /ZW. Der Wert von "__cplusplus_winrt" ist das Ganzzahlliteral 201009. |
__COUNTER__ |
Wird auf ein Ganzzahlliteral beginnend mit 0 erweitert und jedes Mal um 1 erhöht, wenn es in einer Quelldatei oder in den eingeschlossenen Headern der Quelldatei verwendet wird. __COUNTER__ speichert den Zustand beim Verwenden vorkompilierter Header. Im folgenden Beispiel wird __COUNTER__ verwendet, um eindeutige Bezeichner drei verschiedenen Objekten desselben Typs zuzuweisen. Gehen wir zunächst von der folgenden Klassendefinition aus. Der Konstruktor akzeptiert eine ganze Zahl als Parameter.
In der Hauptversion werden mit der Anwendung drei Objekte des Typs exampleClass deklariert, wobei __COUNTER__ als eindeutiger Bezeichnerparameter verwendet wird.
|
__cplusplus |
Ist nur für C++-Programme definiert. |
_CPPRTTI |
Definiert für Code, der mit /GR kompiliert wurde (Laufzeittypinfo aktivieren). |
_CPPUNWIND |
Definiert für Code, der mithilfe eines der /EH (Ausnahmebehandlungsmodell)-Flags kompiliert wurde. |
_DEBUG |
|
_DLL |
Definiert, wenn /MD oder /MDd (Multithreaded DLL) angegeben wird. |
__FUNCDNAME__ |
Nur in einer Funktion gültig. Definiert den ergänzten Namen der einschließenden Funktion als Zeichenfolgenliteral. __FUNCDNAME__ wird nicht erweitert, wenn Sie die Compileroption /EP oder /P verwenden. Im folgenden Beispiel werden die Makros __FUNCDNAME__, __FUNCSIG__ und __FUNCTION__ verwendet, um Funktionsinformationen anzuzeigen.
|
__FUNCSIG__ |
Nur in einer Funktion gültig. Definiert die Signatur der einschließenden Funktion als Zeichenfolgenliteral. __FUNCSIG__ wird nicht erweitert, wenn Sie die Compileroption /EP oder /P verwenden. Unter einem 64-Bit-Betriebssystem ist die Aufrufkonvention standardmäßig __cdecl. Ein Beispiel finden Sie unter __FUNCDNAME__. |
__FUNCTION__ |
Nur in einer Funktion gültig. Definiert den nicht ergänzten Namen der einschließenden Funktion als Zeichenfolgenliteral. __FUNCTION__ wird nicht erweitert, wenn Sie die Compileroption /EP oder /P verwenden. Ein Beispiel finden Sie unter __FUNCDNAME__. |
_INTEGRAL_MAX_BITS |
Meldet die maximale Größe (in Bit) für einen Integraltyp als Ganzzahlliteral.
|
_M_AMD64 |
Definiert für Kompilierungen, die auf x64-Prozessoren abzielen. |
_M_ARM |
Definiert für Kompilierungen, die auf ARM-Prozessoren abzielen. |
_M_CEE |
Definiert für eine Kompilierung, die jede Form von /clr verwendet (z. B. /clr:oldSyntax, /clr:safe). |
_M_CEE_PURE |
Definiert für eine Kompilierung, die /clr:pure verwendet. |
_M_CEE_SAFE |
Definiert für eine Kompilierung, die /clr:safe verwendet. |
_M_IX86 |
Definiert für Kompilierungen, die auf x86-Prozessoren abzielen. Wird nicht für x64-Prozessoren definiert. |
_M_ARM_FP |
Wird auf einen Ganzzahlliteralwert erweitert, der angibt, welche /arch-Compileroption verwendet wurde:
|
_M_IX86_FP |
Wird auf einen Ganzzahlliteralwert erweitert, der angibt, welche /arch-Compileroption verwendet wurde:
|
_M_X64 |
Definiert für Kompilierungen, die auf x64-Prozessoren abzielen. |
_MANAGED |
Definiert, dass dieser Wert "1" ist, wenn /clr angegeben wurde. |
_MFC_VER |
Definiert die MFC-Version, die als Ganzzahlliteral codiert ist. |
_MSC_BUILD |
Ergibt ein Ganzzahlliteral, das die Revisionskomponente der Versionsnummer des Compilers enthält. Die Revisionsnummer ist die vierte Komponente der durch Punkte getrennten Versionsnummer. Wenn die Versionsnummer des Visual C++-Compilers beispielsweise "15.00.20706.01" ist, wird das _MSC_BUILD-Makro in 1 ausgewertet. |
_MSC_EXTENSIONS |
Dieses Makro wird definiert, wenn Sie mit der Compileroption /Ze kompilieren (Standardeinstellung). Der Wert, wenn er definiert wurde, ist "1". |
_MSC_FULL_VER |
Ergibt ein Ganzzahlliteral, das die Komponenten "Hauptversion", "Nebenversion" und "Buildnummer" der Versionsnummer des Compilers codiert. Die Nummer der Hauptversion ist die erste Komponente der durch Punkte getrennten Versionsnummer, die Nummer der Nebenversion die zweite Komponente und die Buildnummer die dritte Komponente. Wenn die Versionsnummer des Visual C++-Compilers beispielsweise "15.00.20706.01" ist, wird das _MSC_FULL_VER-Makro in 150020706 ausgewertet. Geben Sie cl /? an der Befehlszeile ein, um die Versionsnummer des Compilers anzuzeigen. |
_MSC_VER |
Ergibt ein Ganzzahlliteral, das die Komponenten "Hauptversion" und "Nebenversion" der Versionsnummer des Compilers codiert. Die Nummer der Hauptversion ist die erste Komponente der durch Punkte getrennten Versionsnummer und die Nummer der Nebenversion die zweite Komponente. Wenn die Versionsnummer des Visual C++-Compilers beispielsweise "17.00.51106.1" ist, wird das _MSC_VER-Makro in 1700 ausgewertet. Geben Sie cl /? an der Befehlszeile ein, um die Versionsnummer des Compilers anzuzeigen. |
__MSVC_RUNTIME_CHECKS |
Definiert, wenn eine der /RTC-Compileroptionen angegeben wird. |
_MT |
Definiert, wenn /MD oder /MDd (Multithreaded DLL) oder /MT oder /MTd (Multithreaded) angegeben wurde. |
_NATIVE_WCHAR_T_DEFINED |
Definiert, wenn /Zc:wchar_t verwendet wird. |
_OPENMP |
Wird beim Kompilieren mit „/openmp“ definiert. Es wird als ein Ganzzahlliteral ausgewertet, das für das Datum der OpenMP-Spezifikation steht, die mit Visual C++ implementiert wurde.
|
_VC_NODEFAULTLIB |
Definiert, wenn /Zl verwendet wird. Unter /Zl (Kein Standardbibliotheksname) finden Sie weitere Informationen. |
_WCHAR_T_DEFINED |
Definiert, wenn /Zc:wchar_t verwendet wird oder wenn "wchar_t" in einer Systemheaderdatei definiert wurde, die im Projekt enthalten ist. |
_WIN32 |
Definiert für Anwendungen für Win32 und Win64. Immer definiert. |
_WIN64 |
Definiert für Anwendungen für Win64. |