/D (前置處理器定義)
更新:2007 年 11 月
為您的原始程式檔 (Source File) 定義了前置處理符號。
/Dname[= | # [{string | number}] ]
備註
您可以透過 #if 或 #ifdef 使用此符號,進行條件式地編譯原始檔。符號定義將持續有效,直到在原始檔中碰到重複定義,或在原始檔中以 #undef 指示詞取消該符號的定義為止。
/D 的效果和在原始檔開頭處使用 #define 指示詞極為相似。不過,/D 會移除命令列上的引號,而 #define 則會加以保留。
與符號相關聯的符號將預設為 1,也就是,/DTEST 相當於 /DTEST=1。在以下範例中,TEST 的定義是顯示為列印 1。
以 /Dname= 編譯會讓符號不含關聯值。因此,雖然該符號仍可用來條件式地編譯程式碼,在其他方面則判定為無任何值。例如,在範例程式中,以 /DTEST= 編譯將造成編譯器錯誤。此行為與使用包含或不含某值的 #define 相似。
以下命令是定義 TEST.c 中的符號 DEBUG:
CL /DDEBUG TEST.C
以下命令會移除 TEST.c 中所有出現的關鍵字 __far:
CL /D__far= TEST.C
您不能將 CL 環境變數設定至含有等號的字串。若要使用 /D 配合 CL 環境變數,您必須指定數字符號來取代等號:
SET CL=/DTEST#0
若要在 Visual Studio 開發環境中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。如需詳細資訊,請參閱 HOW TO:開啟專案屬性頁。
按一下 [C/C++] 資料夾。
按一下 [前置處理器] 屬性頁。
修改 [前置處理器定義] 屬性。
以程式方式設定這個編譯器選項
範例
// cpp_D_compiler_option.cpp
// compile with: /DTEST
#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