Freigeben über


/D (Präprozessordefinitionen)

Definiert ein Vorverarbeitungssymbol für eine Quelldatei.

Syntax

/D[ ]name[= | # [{ string | number }] ]
/D[ ]"name[= | # [{ string | number }] ]"

Hinweise

Sie können dieses Symbol mit #if oder #ifdef zur bedingten Kompilierung von Quellcode verwenden. Die Symboldefinition bleibt wirksam, bis sie im Code neu definiert oder durch eine #undef Direktive nicht definiert ist.

/D hat dieselbe Wirkung wie eine #define Direktive am Anfang einer Quellcodedatei. Der Unterschied besteht darin, dass /D Anführungszeichen in der Befehlszeile entfernt werden, und eine #define Direktive behält sie bei. Sie können Leerzeichen zwischen dem /D Symbol und dem Symbol haben. Es kann kein Leerzeichen zwischen dem Symbol und dem Gleichheitszeichen oder zwischen dem Gleichheitszeichen und einem beliebigen zugewiesenen Wert vorhanden sein.

Standardmäßig wird einem Symbol der Wert 1 zugeordnet. /D name entspricht beispielsweise /D name=1. Im Beispiel am Ende dieses Artikels wird die Definition TEST des Ausdrucks 1angezeigt.

Das Kompilieren mithilfe der Verwendung /D name= bewirkt, dass der Symbolname keinen zugeordneten Wert aufweist. Obwohl das Symbol trotzdem zur bedingten Codekompilierung verwendet werden kann, ergibt das Symbol keinen Wert. Wenn Sie das Beispiel mithilfe von Kompilieren kompilieren /DTEST=, tritt ein Fehler auf. Dieses Verhalten ähnelt der Verwendung von #define mit oder ohne Wert.

Die /D Option unterstützt keine funktionsähnlichen Makrodefinitionen. Um Definitionen einzufügen, die nicht in der Befehlszeile definiert werden können, berücksichtigen Sie die /FI Compileroption (Name forced include file).

Sie können in der Befehlszeile mehrere Male verwenden /D , um weitere Symbole zu definieren. Wenn dasselbe Symbol mehrmals definiert ist, wird die letzte Definition verwendet.

Dieser Befehl definiert das DEBUG-Symbol in TEST.C:

CL /DDEBUG TEST.C

Mit dem folgenden Befehl werden alle Vorkommen des Schlüsselworts __far aus TEST.C entfernt.

CL /D __far= TEST.C

Die CL-Umgebungsvariable kann nicht auf eine Zeichenfolge festgelegt werden, die das Gleichheitszeichen enthält. Um zusammen mit der Umgebungsvariablen CL zu verwenden/D, müssen Sie anstelle des Gleichheitszeichens das Nummernzeichen (#) angeben:

SET CL=/DTEST#0

Wenn Sie ein Vorverarbeitungssymbol an der Eingabeaufforderung definieren, sollten Sie Compileranalyseregeln sowie Shell-Analyseregeln berücksichtigen. Wenn Sie beispielsweise ein Präverarbeitungssymbol für Prozentzeichen (%) in Ihrem Programm definieren möchten, geben Sie an der Eingabeaufforderung zwei Prozentzeichen (%%) an. Wenn Sie nur einen angeben, wird ein Analysefehler ausgegeben.

CL /DTEST=%% TEST.C

So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Weitere Informationen erhalten Sie unter Set C++ compiler and build properties in Visual Studio (Festlegen der Compiler- und Buildeigenschaften (C++) in Visual Studio).

  2. Wählen Sie die Konfigurationseigenschaftenseite>C/C++>-Präprozessoreigenschaft aus.

  3. Öffnen Sie das Dropdownmenü der Präprozessordefinitionseigenschaft , und wählen Sie "Bearbeiten" aus.

  4. Fügen Sie im Dialogfeld "Präprozessordefinitionen " eine oder mehrere Definitionen pro Zeile hinzu, ändern oder löschen Sie sie. Klicken Sie auf OK, um die Änderungen zu speichern.

    Sie müssen das Optionspräfix "/D" nicht in die hier angegebenen Definitionen einschließen. Auf der Eigenschaftenseite werden Definitionen durch Semikolons (;) getrennt.

So legen Sie diese Compileroption programmgesteuert fest

Beispiel

// cpp_D_compiler_option.cpp
// compile with: cl /EHsc /DTEST cpp_D_compiler_option.cpp
#include <stdio.h>

int main( )
{
#ifdef TEST
    printf_s("TEST defined %d\n", TEST);
#else
    printf_s("TEST not defined\n");
#endif
}
TEST defined 1

Siehe auch

MSVC-Compileroptionen
Syntax für die MSVC-Compilerbefehlszeile
/FI (Name forced include file)
/U, /u (Undefine Symbols)
#undef Direktive (C/C++)
#define Direktive (C/C++)