/D (Definicje preprocesora)
Definiuje symbol przetwarzania wstępnego dla pliku źródłowego.
Składnia
/D
[ ]name[=
|#
[{ ciąg | number }] ]
/D
[ ]"
name[=
|#
[{ ciąg | number }] ]"
Uwagi
Tego symbolu można używać razem z #if
lub #ifdef
do warunkowego kompilowania kodu źródłowego. Definicja symboli pozostaje w mocy, dopóki nie zostanie ponownie zdefiniowana w kodzie lub nie zostanie zdefiniowana w kodzie przez dyrektywę #undef
.
/D
ma taki sam efekt jak #define
dyrektywa na początku pliku kodu źródłowego. Różnica polega na tym, że /D
usuwa znaki cudzysłowu w wierszu polecenia, a #define
dyrektywa je przechowuje. Możesz mieć odstępy między symbolem /D
i . Między symbolem a znakiem równości nie może być odstęp lub między znakiem równości a dowolną przypisaną wartością.
Domyślnie wartość skojarzona z symbolem to 1. Na przykład instrukcja /D name
jest równoważna instrukcji /D name=1
. W przykładzie na końcu tego artykułu zostanie wyświetlona definicja TEST
polecenia , aby wydrukować 1
element .
Kompilowanie przy użyciu powoduje/D name=
, że nazwa symbolu nie ma skojarzonej wartości. Mimo że nadal można używać symbolu, aby warunkowo skompilować kod, szacuje się on na wartość nothing. W tym przykładzie, jeśli kompilujesz przy użyciu metody /DTEST=
, wystąpi błąd. To zachowanie przypomina użycie elementu #define
z wartością lub bez niej.
Opcja /D
nie obsługuje definicji makr podobnych do funkcji. Aby wstawić definicje, których nie można zdefiniować w wierszu polecenia, rozważ opcję kompilatora /FI
(Nazwa wymuszonego dołączania pliku).
Możesz użyć /D
wiele razy w wierszu polecenia, aby zdefiniować więcej symboli. Jeśli ten sam symbol jest zdefiniowany więcej niż raz, używana jest ostatnia definicja.
To polecenie definiuje symbol DEBUG w TEST.c:
CL /DDEBUG TEST.C
To polecenie usuwa wszystkie wystąpienia słowa kluczowego __far
w pliku TEST.c:
CL /D __far= TEST.C
Nie można ustawić zmiennej środowiskowej CL na ciąg zawierający znak równości. Aby używać /D
razem ze zmienną CL
środowiskową, należy określić znak numeru (#
) zamiast znaku równości:
SET CL=/DTEST#0
Podczas definiowania symbolu przetwarzania wstępnego w wierszu polecenia, należy wziąć pod uwagę reguły analizy składni zarówno kompilatora, jak i powłoki. Aby na przykład zdefiniować symbol przetwarzania wstępnego znaku procentu (%
) w programie, określ dwa znaki znaku procentowego (%%
) w wierszu polecenia. Jeśli określisz tylko jeden, zostanie wyemitowany błąd analizy.
CL /DTEST=%% TEST.C
Aby ustawić tę opcję kompilatora w środowisku programowania Visual Studio
Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać więcej informacji, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilacji w programie Visual Studio).
Wybierz stronę właściwości Właściwości>konfiguracji C/C++>Preprocesor.
Otwórz menu rozwijane właściwości Definicje preprocesora i wybierz pozycję Edytuj.
W oknie dialogowym Definicje preprocesora dodaj, zmodyfikuj lub usuń co najmniej jedną definicję na wiersz. Wybierz przycisk OK , aby zapisać zmiany.
Nie musisz dołączać prefiksu opcji "/D" do definicji, które określisz tutaj. Na stronie właściwości definicje są oddzielone średnikami (
;
).
Aby programowo ustawić tę opcję kompilatora
- Zobacz: PreprocessorDefinitions.
Przykład
// 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
Zobacz też
Opcje kompilatora MSVC
Składnia wiersza polecenia kompilatora MSVC
/FI
(Nazwa wymuszonego pliku dołączania)
/U
, /u
(Niezdefiniuj symbole)
#undef
Dyrektywa (C/C++)
#define
Dyrektywa (C/C++)