/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 開發環境中設定這個編譯器選項

  1. 開啟專案的 [屬性頁] 對話方塊。如需詳細資訊,請參閱 HOW TO:開啟專案屬性頁

  2. 按一下 [C/C++] 資料夾。

  3. 按一下 [前置處理器] 屬性頁。

  4. 修改 [前置處理器定義] 屬性。

以程式方式設定這個編譯器選項

範例

// 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

請參閱

參考

編譯器選項

設定編譯器選項

/U、/u (取消定義符號)

The #undef Directive

The #define Directive