次の方法で共有


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

更新 : 2010 年 7 月

ソース ファイルのプリプロセッサ シンボルを定義します。

/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

コマンド プロンプトでプリプロセッサ シンボルを定義する場合、コンパイラ解析規則と同様にシェル解析規則についても考慮してください。 たとえば、プログラムでパーセント記号 1 文字のプリプロセッサ シンボル (%) を定義するには、コマンド ラインでパーセント記号 2 文字 (%%) を指定します。 パーセント記号を 1 文字だけ指定すると、解析エラーが発生します。

CL /DTEST=%% TEST.C

Visual Studio 開発環境でこのコンパイラ オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。

  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 月

"%" 1 文字のプリプロセッサ シンボルを定義するために 2 文字の "%%" を指定する必要があるという説明を追加しました。

コンテンツ バグ修正