/D (プリプロセッサの定義)/D (Preprocessor Definitions)

ソース ファイルのプリプロセッサ シンボルを定義します。Defines a preprocessing symbol for a source file.


/Dname[= | # [{string | number}] ]


このシンボルを #if または #ifdef と一緒に使用すると、ソース コードを条件付きでコンパイルできます。You can use this symbol together with #if or #ifdef to compile source code conditionally. シンボル定義は、コードで再定義されるまで、または #undef ディレクティブによってコードで未定義になるまで有効です。The symbol definition remains in effect until it is redefined in the code or is undefined in the code by the #undef directive.

/Dと同じ効果があります、#define点を除いて、ソース コード ファイルの先頭にディレクティブ /Dコマンドラインの引用符を削除し、#defineそれらを保持します。/D has the same effect as the #define directive at the beginning of a source code file, except that /D strips quotation marks on the command line and #define retains them.

既定では、シンボルに関連付けられる値は 1 です。By default, the value associated with a symbol is 1. たとえば、 /D nameと等価 /Dname= 1します。For example, /Dname is equivalent to /Dname=1. この記事では、定義の最後の例ではテストを印刷するには、1します。In the example at the end of this article, the definition of TEST is shown to print 1.

使用してコンパイル /D name = と関連付けられている値がないシンボル。Compiling by using /Dname= causes the symbol to have no associated value. シンボルは引き続きコードの条件コンパイルに使用できますが、何も指定されていないものとして評価されます。Although the symbol can still be used to conditionally compile code, it otherwise evaluates to nothing. 使用してコンパイルする場合の例で /DTEST = エラーが発生します。In the example, if you compile by using /DTEST=, an error occurs. この動作は、値を指定して、または値を指定せずに #define を使用する場合と似ています。This behavior resembles the use of #define with or without a value.

次のコマンドを実行すると、TEST.c で DEBUG シンボルが定義されます。This command defines the symbol DEBUG in TEST.c:


次のコマンドを実行すると、TEST.c からすべての __far キーワードが削除されます。This command removes all occurrences of the keyword __far in TEST.c:

CL /D__far= TEST.CCL /D__far= TEST.C

CL環境変数は、等号 (=) を含む文字列に設定することはできません。The CL environment variable cannot be set to a string that contains the equal sign. 使用する /Dと共に、 CL環境変数を指定してください、等号 (=) ではなくシャープ記号。To use /D together with the CL environment variable, you must specify the number sign instead of the equal sign:


コマンド プロンプトでプリプロセッサ シンボルを定義する場合は、コンパイラ解析規則とシェル解析規則の両方を考慮してください。When you define a preprocessing symbol at the command prompt, consider both compiler parsing rules and shell parsing rules. たとえば、パーセント記号のプリプロセッサ シンボル (%) を定義するにはプログラムでは、パーセント記号 2 文字 (%) を指定しますコマンド プロンプト。1 つだけを指定する場合は、解析エラーが生成されます。For example, to define a percent-sign preprocessing symbol (%) in your program, specify two percent-sign characters (%%) at the command prompt: If you specify only one, a parsing error is emitted.


Visual Studio 開発環境において、このコンパイラ オプションを設定する方法To set this compiler option in the Visual Studio development environment

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。Open the project Property Pages dialog box. 詳細については、次を参照してください。 Visual Studio での設定の C++ コンパイラとビルド プロパティします。For more information, see Set C++ compiler and build properties in Visual Studio.

  2. 左側のウィンドウで次のように選択します。構成プロパティc/c++プリプロセッサします。In the left pane, select Configuration Properties, C/C++, Preprocessor.

  3. 右側の列の右側のウィンドウで、プリプロセッサの定義プロパティ、ドロップダウン メニューを開き、選択編集します。In the right pane, in the right-hand column of the Preprocessor Definitions property, open the drop-down menu and choose Edit.

  4. プリプロセッサの定義ダイアログ ボックスで、(1 行につき 1 つ) を追加、変更、または 1 つまたは複数の定義を削除します。In the Preprocessor Definitions dialog box, add (one per line), modify, or delete one or more definitions. OK を選択して変更を保存してください。Choose OK to save your changes.

このコンパイラ オプションをコードから設定するにはTo set this compiler option programmatically


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

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

関連項目See also

MSVC コンパイラ オプションMSVC Compiler Options
MSVC コンパイラ コマンド ラインの構文MSVC Compiler Command-Line Syntax
/U、/u (定義済みマクロ シンボルの未定義化)/U, /u (Undefine Symbols)
#undef ディレクティブ (C/C++)#undef Directive (C/C++)
#define ディレクティブ (C/C++)#define Directive (C/C++)