Freigeben über


Vordefinierte Makros

Listet die vordefinierten Makros ANSI C und Microsoft C++-Implementierung auf.

Der Compiler erkennt vordefinierte ANSI C-Makros und die Microsoft C++-Implementierung stellt mehrere mehr.Diese Makros nehmen keine Argumente und können nicht neu definiert werden.Einige der vorkompilierten Makros, die unten aufgeführt sind, werden mit mehreren Werten definiert.Siehe die folgenden Tabellen weitere Informationen.

ANSI-Kompatible vordefinierte Makros

Makro

Description

__DATE__

Das Kompilierungsdatum der aktuellen Quelldatei.Das Datum ist ein Zeichenfolgenliteral des Formulars Mmm dd yyyy.Der Monatsname Mmm ist der gleiche wie für die Daten, die für die - asctime generiert werden, das in TIME.H. deklariert wird.

__FILE__

Der Name der aktuellen Quelldatei.__FILE__ erweitert zu einer Zeichenfolge, die durch doppelte Anführungszeichen eingeschlossen wird.Um sicherzustellen dass der vollständige Pfad der Datei angezeigt wird, verwenden Sie /FC (Vollständiger Pfad der Quellcodedatei in Diagnostik).

__LINE__

Die Zeilennummer in der aktuellen Quelldatei.Die Zeilennummer ist ein Dezimalzeichen ganzzahlige Konstante.Sie kann mit #line-Direktive geändert werden.

__STDC__

Gibt vollständige Übereinstimmung mit dem Standard ANSI C an.Definiert als die ganzzahlige Konstante 1 nur wenn die /Za-Compileroption angegeben ist und Sie nicht kompiliert C++-Code; andernfalls wird nicht definiert.

__TIME__

Die neueste Kompilierungszeit der aktuellen Quelldatei.Die Zeit ist ein Zeichenfolgenliteral des Formulars hh: mm: ss.

__TIMESTAMP__

Das Datum und die Uhrzeit der letzten Änderung der aktuellen Quelldatei, ausgedrückt als Zeichenfolgenliteral in der Form Datum des DDD-Mmm hh: mm: ss yyyy, in der ddd der abgekürzte Wochentag und Datum ist, ist eine ganze Zahl von 1 bis 31.

Microsoft-spezifische vordefinierte Makros

Makro

Description

_ATL_VER

Definiert die ATL-Version.

In Visual Studio 2010, wird _ATL_VER als 0x1000 definiert.

_CHAR_UNSIGNED

Standard char-Typ ist ohne Vorzeichen.Definiert, wenn /J angegeben wird.

__CLR_VER

Definiert die verwendeten Version der Common Language Runtime, als die Anwendung kompiliert wurde.Der zurückgegebene Wert ist im folgenden Format:

Mmmbbbbb

Hierbei ist:

  • M ist die Hauptversion der Laufzeit

  • mm ist die Nebenversion der Laufzeit

  • bbbbb ist die Buildnummer.

// clr_ver.cpp
// compile with: /clr
using namespace System;
int main() {
   Console::WriteLine(__CLR_VER);
}

__cplusplus_cli

Definiert, wenn Sie mit /clr, /clr:pure oder /clr:safe kompilieren.Wert von __cplusplus_cli ist 200406.__cplusplus_cli ist wirksam während der Übersetzungseinheit.

// cplusplus_cli.cpp
// compile with: /clr
#include "stdio.h"
int main() {
   #ifdef __cplusplus_cli
      printf("%d\n", __cplusplus_cli);
   #else
      printf("not defined\n");
   #endif
}

__COUNTER__

Erweitert auf eine ganze Zahl, die mit 0 startet und um 1 inkrementiert, wenn es in einer Quelldatei oder in der Quelldatei enthaltenen Headern verwendet wird.__COUNTER__ speichert an ihren Zustand, wenn Sie vorkompilierte Header verwendet werden.

Im folgenden Beispiel wird __COUNTER__, um eindeutige Bezeichner auf drei verschiedenen Objekten des gleichen Typs zuzuweisen.

Zunächst verwenden Sie die folgende Klassendefinition.Der Konstruktor akzeptiert eine ganze Zahl als Parameter.

In der Haupt- deklariert die Anwendung drei Objekte Typ exampleClass, mit __COUNTER__ als - Parameter des eindeutigen Bezeichners.

__cplusplus

Definiert für nur C++-Programme.

_CPPRTTI

Definiert für Code kompiliert mit /GR (aktivieren Sie Laufzeit-Typeninformationen).

_CPPUNWIND

Definiert für Code kompiliert mit /GX (aktivieren Sie Ausnahmebehandlung).

_DEBUG

Definiert, wenn Sie mit /LDd, /MDd und /MTd kompilieren.

_DLL

Definiert, wenn /MD oder /MDd Multi-threaded-DLL (DLL) angegeben wird.

__FUNCDNAME__

Nur in einer Funktion.Definiert ergänzter Name der einschließenden Funktion als Zeichenfolge.

__FUNCDNAME__ ist nicht erweitert, wenn Sie die /EP oder /P-Compileroption verwenden.

Im folgenden Beispiel wird __FUNCDNAME__, __FUNCSIG__ und __FUNCTION__ Makros, um Funktionsinformationen anzuzeigen.

__FUNCSIG__

Nur in einer Funktion.Definiert die Signatur der einschließenden Funktion als Zeichenfolge.

__FUNCSIG__ ist nicht erweitert, wenn Sie die /EP oder /P-Compileroption verwenden.

Auf einem 64-Bit-Betriebssystem ist die Aufrufkonvention __cdecl standardmäßig.

Ein Beispiel finden Sie unter __FUNCDNAME__.

__FUNCTION__

Nur in einer Funktion.Definiert den nicht ergänzten Namen der einschließenden Funktion als Zeichenfolge.

__FUNCTION__ ist nicht erweitert, wenn Sie die /EP oder /P-Compileroption verwenden.

Ein Beispiel finden Sie unter __FUNCDNAME__.

_INTEGRAL_MAX_BITS

Zeigt die maximale Größe (in den Bits) für einen ganzzahligen Typ.

// integral_max_bits.cpp
#include <stdio.h>
int main() {
   printf("%d\n", _INTEGRAL_MAX_BITS);
}

_M_ALPHA

Definiert für ALPHAplattformen DEC (nicht mehr unterstützt).

_M_AMD64

Definiert für x64-Prozessoren.

_M_CEE

Definiert für eine Kompilierung, die jedes Formular von /clr verwendet (/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 x86-Prozessoren.Siehe die Werte für _M_IX86 Tabelle unten weitere Informationen.Dies wird nicht für x64-Prozessoren definiert.

_M_IA64

Definiert für Itanium Prozessor-Familien64-bit-Prozessoren.

_M_ARM_FP

Erweitert den Wert ein angibt, das /arch-Compileroption verwendet wurde:

  • Im Bereich 30-39, wenn keine /arch ARMoption angegeben wurde, die standardmäßige Architektur für ARM angibt wurde verwendet VFPv3().

  • Im Bereich 40-49, wenn /arch:VFPv4 verwendet wurde.

  • Weitere Informationen finden Sie unter /arch (x86).

_M_IX86_FP

Erweitert den Wert ein angibt, das /arch-Compileroption verwendet wurde:

  • 0 Wenn /arch:IA32 verwendet wurde.

  • 1 Wenn /arch:SSE verwendet wurde.

  • 2 Wenn /arch:SSE2 verwendet wurde.Dieser Wert ist der Standardwert, wenn /arch nicht angegeben wurde.

  • Weitere Informationen finden Sie unter /arch (x86).

_M_MPPC

Definiert für Power Macintosh-Plattformen (nicht mehr unterstützt).

_M_MRX000

Definiert für MIPS-Plattformen (nicht mehr unterstützt).

_M_PPC

Definiert für PowerPC-Plattformen (nicht mehr unterstützt).

_M_X64

Definiert für x64-Prozessoren.

_MANAGED

Definiert, um 1 zu werden, wenn /clr angegeben wird.

_MFC_VER

Definiert die MFC-Version.Beispielsweise in Visual Studio 2010, wird _MFC_VER als 0x0A00 definiert.

_MSC_BUILD

Ergibt zur Revisionsnummerenkomponente der Versionsnummer des Compilers aus.Die Revisionsnummer ist die vierte Komponente der durch Punkte getrennten Versionsnummer.Wenn die Versionsnummer des Visual C++-Compilers 15.00.20706.01 ist, ist das _MSC_BUILD Makro auf 1. aus.

_MSC_EXTENSIONS

Dieses Makro wird definiert, wenn Sie mit der Compileroption kompilieren /Ze (Standardeinstellung).Der Wert, wenn er definiert wurde, ist 1.

_MSC_FULL_VER

Ergibt den Haupt-, um geringfügig und zu den Buildnummerenkomponenten der Versionsnummer des Compilers aus.Die Zahl ist die erste Komponente der durch Punkte getrennten Versionsnummer, ist die kleine Zahl die zweite Komponente, die Buildnummer ist die dritte Komponente.Wenn die Versionsnummer des Visual C++-Compilers 15.00.20706.01 ist, ist das _MSC_FULL_VER Makro bis 150020706 aus.Geben Sie cl /? an der Befehlszeile ein, um die Versionsnummer des Compilers anzuzeigen.

_MSC_VER

Ergibt zu den Haupt- und Zahlenkomponenten der Versionsnummer des Compilers aus.Die Zahl ist die erste Komponente der durch Punkte getrennten Versionsnummer und die kleine Zahl ist die zweite Komponente.

Wenn die Versionsnummer des Visual C++-Compilers 15.00.20706.01 ist, ist das _MSC_VER Makro bis 1500 aus.

In Visual Studio 2010, wird _MSC_VER als 1600 definiert.

__MSVC_RUNTIME_CHECKS

Definiert, wenn eine der /RTC-Compileroptionen angegeben wird.

_MT

Definiert, wenn /MD oder /MDd Multi-threaded-DLL (DLL) oder /MT oder /MTd Multi-threaded-DLL () angegeben wurde.

_NATIVE_WCHAR_T_DEFINED

Definiert, wenn /Zc: wchar_t verwendet wird.

_OPENMP

Beim Kompilieren mit /openmp definiert, gibt ein die ganze Zahl, die das Datum der OpenMP-Spezifikation implementiert mit Visual C++ darstellt.

// _OPENMP_dir.cpp
// compile with: /openmp 
#include <stdio.h> 
int main() {
   printf("%d\n", _OPENMP);
}

_VC_NODEFAULTLIB

Definiert, wenn /Zl verwendet wird; /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 ist, 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.

_Wp64

Definiert, wenn /Wp64 angegeben wird.

Wie in der folgenden Tabelle gezeigt generiert der Compiler einen Wert für die Präprozessorbezeichner, die die angegebene Prozessoroption entsprechen.

Werte für _M_IX86

Option in der Entwicklungsumgebung

Befehlszeilenoption

Ergebniswert

Übergang

/GB

_M_IX86 = 600 (Standardeinstellung.Zukünftige Compiler geben einen anderen Wert aus, um den bestimmenden Prozessor wiederzugeben.)

Pentium

/G5

_M_IX86 = 500

Pentium Pro, Pentium II und Pentium III

/G6

_M_IX86 = 600

80386

/G3

_M_IX86 = 300

80486

/G4

_M_IX86 = 400

Siehe auch

Referenz

Makros (C/C++)

Präprozessor-Operatoren

Präprozessordirektiven