/D (プリプロセッサの定義)
更新 : 2007 年 11 月
ソース ファイルのプリプロセッサ シンボルを定義します。
/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 には、等号 (=) を含む文字列は設定できません。環境変数 CL で /D オプションを指定する場合は、等号 (=) の代わりにシャープ記号 (#) を使う必要があります。
SET CL=/DTEST#0
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。
[C/C++] フォルダをクリックします。
[プリプロセッサ] プロパティ ページをクリックします。
[プロセッサの定義] プロパティを変更します。
このコンパイラ オプションをコードから設定するには
- PreprocessorDefinitions を参照してください。
使用例
// 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