Share via


/D (前置處理器定義)

更新:2010 年 7 月

為原始程式檔 (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

在命令提示字元定義前置處理符號時,請考慮殼層剖析規則,以及編譯器剖析規則。 例如,要在程式中定義一個百分比前置處理符號 (%),請在命令列上指定兩個百分號字元 (%%)。 如果您指定唯一的百分比符號,會發生剖析錯誤。

CL /DTEST=%% TEST.C

在 Visual Studio 開發環境中設定這個編譯器選項

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

  2. 在左窗格中,按一下 [C/C++] ,然後按一下 [前置處理器]。

  3. 在右窗格中修改 [前置處理器定義] 屬性。

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

範例

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

請參閱

參考

編譯器選項

設定編譯器選項

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

#undef Directive (C/C++)

#define Directive (C/C++)

變更記錄

日期

記錄

原因

2010 年 7 月

新增您必須指定兩個 "%%" 符號以定義一個 "%" 前置處理符號。

內容 Bug 修正。