定義済みマクロ
この記事では、ANSI/ISO C99 実装および Microsoft C++ 実装の定義済みプリプロセッサ マクロの一覧を示します。
コンパイラは、定義済みの ANSI C99 実装の C プリプロセッサ マクロのほかに、Microsoft C++ 実装のいつくかの定義済みマクロも認識します。 これらのプリプロセッサ マクロは引数を取らず、再定義することはできません。 この記事に示している定義済みマクロの一部は複数の値を使用して定義されます。
ANSI 準拠の定義済みマクロ
マクロ |
説明 |
---|---|
__DATE__ |
現在のソース ファイルのコンパイル日付。 日付は Mmm dd yyyy 形式の文字列リテラルです。 月の名前 Mmm は、TIME.H で宣言された asctime ライブラリ関数によって生成される日付のものと同じです |
__FILE__ |
現在のソース ファイルの名前。 __FILE__ は文字列リテラルに展開されます。 ファイルへの完全なパスが表示されるようにするには、/FC (診断時のソース コード ファイルの完全パス) を使用します。 |
__func__ |
これが含まれている関数の、非修飾かつ非装飾の名前を char 型の配列として返します。
|
__LINE__ |
現在のソース ファイルの行番号。 行番号は 10 進数の整数リテラルです。 これは #line ディレクティブを使用して変更できます。 |
__STDC__ |
ANSI/ISO C99 規格への準拠を示します。 /Za コンパイラ オプションが指定され、C++ コードをコンパイルしていない場合のみ、整数リテラルの定数 1 として定義されます。それ以外の場合は、定義されません。 |
__TIME__ |
現在のソース ファイルの最新のコンパイル時間。 時間は hh:mm:ss 形式の文字列リテラルです。 |
__TIMESTAMP__ |
現在のソース ファイルの最終更新日時は Ddd Mmm Date hh:mm:ss yyyy 形式の文字列リテラルとして表記します。ここで、Ddd は曜日の略称であり、Date は 1 〜 31 の整数です。 |
Microsoft 固有の定義済みマクロ
マクロ |
説明 |
---|---|
_ATL_VER |
整数リテラルとしてエンコードされる ATL バージョンを定義します。 |
__AVX__ |
/arch:AVX または /arch:AVX2 を指定している場合に定義されます。 |
__AVX2__ |
/arch:AVX2 を指定している場合に定義されます。 |
_CHAR_UNSIGNED |
既定の char 型が unsigned になります。 /J を指定している場合に定義されます。 |
__CLR_VER |
アプリケーションのコンパイル時に使用された共通言語ランタイムのバージョンを定義します。 返される値は、次の形式のエンコードされた整数リテラルになります。 Mmmbbbbb 指定項目
|
__cplusplus_cli |
/clr、/clr:pure、または /clr:safe を指定してコンパイルする場合に定義されます。 __cplusplus_cli の値は整数リテラル 200406 です。 __cplusplus_cli は翻訳単位全体で有効になります。
|
__cplusplus_winrt |
/ZW オプションを使用してコンパイルする場合に定義されます。 __cplusplus_winrt の値は整数リテラル 201009 です。 |
__COUNTER__ |
0 から始まる整数リテラルに展開されます。ソース ファイルで使用されるか、ソース ファイルのヘッダーに追加されるたびに 1 ずつ増えます。 __COUNTER__ はプリコンパイル済みヘッダーを使用するときのその状態を記憶します。 次の例では、__COUNTER__ を使用して、同じ型の 3 つの異なるオブジェクトに一意の識別子を割り当てます。 まず、次のクラス定義があるとします。 コンストラクターはパラメーターとして整数を受け取ります。
main で、アプリケーションは一意の識別子パラメーターとして exampleClass を使用して、__COUNTER__ 型の 3 つのオブジェクトを宣言します。
|
__cplusplus |
C++ プログラムの場合にのみ定義されます。 |
_CPPRTTI |
/GR (ランタイムの型情報の有効化) を指定してコンパイルしたコードの場合に定義されます。 |
_CPPUNWIND |
/EH (例外処理モデル) フラグのいずれかを使用してコンパイルしたコードの場合に定義されます。 |
_DEBUG |
|
_DLL |
/MD または /MDd (マルチスレッド DLL) を指定した場合に定義されます。 |
__FUNCDNAME__ |
関数でのみ有効です。 外側の関数の装飾名を文字列リテラルとして定義します。 __FUNCDNAME__/EP または /P コンパイラ オプションを使用する場合、は展開されません。 次の例では、__FUNCDNAME__、__FUNCSIG__、および __FUNCTION__ マクロを使用して、関数の情報を表示します。
|
__FUNCSIG__ |
関数でのみ有効です。 外側の関数のシグネチャを文字列リテラルとして定義します。 __FUNCSIG__/EP または /P コンパイラ オプションを使用する場合、は展開されません。 64 ビット オペレーティング システムでは、既定の呼び出し規約は __cdecl です。 例については、「__FUNCDNAME__」を参照してください。 |
__FUNCTION__ |
関数でのみ有効です。 外側の関数の非装飾名を文字列リテラルとして定義します。 __FUNCTION__/EP または /P コンパイラ オプションを使用する場合、は展開されません。 例については、「__FUNCDNAME__」を参照してください。 |
_INTEGRAL_MAX_BITS |
整数型の最大サイズ (ビット単位) を整数リテラルとしてレポートします。
|
_M_AMD64 |
x64 プロセッサがターゲットのコンパイルの場合に定義されます。 |
_M_ARM |
ARM プロセッサがターゲットのコンパイルの場合に定義されます。 |
_M_CEE |
/clr の任意の形式 (/clr:oldSyntax、/clr:safe など) を使用するコンパイルの場合に定義されます。 |
_M_CEE_PURE |
/clr:pure を使用するコンパイルの場合に定義されます。 |
_M_CEE_SAFE |
/clr:safe を使用するコンパイルの場合に定義されます。 |
_M_IX86 |
x86 プロセッサがターゲットのコンパイルの場合に定義されます。 x64 プロセッサの場合には定義しません。 |
_M_ARM_FP |
使用された /arch コンパイラ オプションを示す整数リテラル値に展開されます。
|
_M_IX86_FP |
使用された /arch コンパイラ オプションを示す整数リテラル値に展開されます。
|
_M_X64 |
x64 プロセッサがターゲットのコンパイルの場合に定義されます。 |
_MANAGED |
/clr を指定している場合に 1 として定義されます。 |
_MFC_VER |
整数リテラルとしてエンコードされる MFC バージョンを定義します。 |
_MSC_BUILD |
コンパイラのバージョン番号のリビジョン番号部分が含まれる整数リテラルに評価されます。 リビジョン番号はピリオド区切りのバージョン番号の 4 番目の部分です。 たとえば、Visual C++ コンパイラのバージョン番号が 15.00.20706.01 ある場合、_MSC_BUILD マクロは 1 に評価されます。 |
_MSC_EXTENSIONS |
/Ze コンパイラ オプション (既定) を使用してコンパイルする場合に定義されます。 その値は定義されると 1 になります。 |
_MSC_FULL_VER |
コンパイラのバージョン番号のメジャー番号、マイナー番号、ビルド番号の部分をエンコードする整数リテラルに評価されます。 メジャー番号はピリオド区切りのバージョン番号の最初の部分、マイナー番号は 2 番目の部分、ビルド番号は 3 番目の部分です。 たとえば、Visual C++ コンパイラのバージョン番号が 15.00.20706.01 ある場合、_MSC_FULL_VER マクロは 150020706 に評価されます。 コマンド ラインで「cl /?」と入力すると、コンパイラのバージョン番号が表示されます。 |
_MSC_VER |
コンパイラのバージョン番号のメジャー番号とマイナー番号の部分をエンコードする整数リテラルに評価されます。 メジャー番号はピリオド区切りのバージョン番号の最初の部分、マイナー番号は 2 番目の部分です。 たとえば、Visual C++ コンパイラのバージョン番号が 17.00.51106.1 である場合、_MSC_VER マクロは 1700 に評価されます。 コマンド ラインで「cl /?」と入力すると、コンパイラのバージョン番号が表示されます。 |
__MSVC_RUNTIME_CHECKS |
/RTC コンパイラ オプションのいずれかを指定している場合に定義されます。 |
_MT |
/MD または /MDd (マルチスレッド DLL)、あるいは /MT または /MTd (マルチスレッド) を指定している場合に定義されます。 |
_NATIVE_WCHAR_T_DEFINED |
/Zc:wchar_t を使用している場合に定義されます。 |
_OPENMP |
/openmp を使用してコンパイルする場合に定義され、Visual C++ によって実装される OpenMP 仕様の日付を表す整数リテラルとして評価されます。
|
_VC_NODEFAULTLIB |
/Zl を使用している場合に定義されます。詳細については、「/Zl (既定のライブラリ名の省略)」を参照してください。 |
_WCHAR_T_DEFINED |
/Zc:wchar_t を使用している場合、またはプロジェクトのシステム ヘッダー ファイルで wchar_t 型を定義している場合に定義されます。 |
_WIN32 |
Win32 および Win64 用のアプリケーションの場合に定義されます。 これは、常に定義されます。 |
_WIN64 |
Win64 用のアプリケーションの場合に定義されます。 |