定義済みマクロ

定義済み ANSI Microsoft C および C++ の実装のマクロに示します。

コンパイラは、定義済みの ANSI C のマクロを確認し、Microsoft C++ の実装では、複数の多くを提供します。これらのマクロは、引数を受け取らず、再定義できません。次に示す複数の値と定義済みマクロのいくつかが定義されます。詳細については、次の表を参照してください。

ANSI 準拠の定義済みマクロ

マクロ

説明

__DATE__

現在のソース ファイルのコンパイルの日付。日付はフォーム yyyy Mmm ddリテラル文字列です。月の名前 [MMM 月] はと TIME.H. で宣言されたライブラリ関数 asctime によって生成される日付を同じです。

__FILE__

現在のソース ファイルの名前。__FILE__ は二重引用符で囲んだ文字列に配置します。ファイルへの完全パスが表示されていることを確認するには、/FC (診断時のソース コード ファイルの完全パス)を使用します。

__LINE__

現在のソース ファイルの行番号。行番号は 10 進整数定数です。これは #line のディレクティブに変更できます。

__STDC__

ANSI C 規格と完全に一致することを示します。/Za のコンパイラ オプションが指定されると、整数定数が 1 と定義されて C++ コードをコンパイルするときだけ; は未定義です。

__TIME__

現在のソース ファイルの最新のコンパイル時間。時間はフォーム hh: mm: ssリテラル文字列です。

__TIMESTAMP__

Ddd と [日付] 曜日のフォーム Ddd Mmm の日付 hh: mm: yyyy "ためにリテラル文字列で表現される現在のソース ファイルが最後に変更された日時 1 から 31 までの整数です。

Microsoft 固有の組み込みマクロ

マクロ

説明

_ATL_VER

ATL バージョンを定義します。

Visual Studio 2010 では、_ATL_VER 0x1000 はとして定義されます。

_CHAR_UNSIGNED

既定の char の型が符号です。/J を指定した場合に定義されます。

__CLR_VER

アプリケーションがコンパイルされるときに使用される共通言語ランタイムのバージョンを定義します。返される値は、次の形式です:

Mmmbbbbb

指定項目

  • M はランタイムのメジャー バージョンです

  • mm は、ランタイムのマイナー バージョン。

  • bbbbb は、ビルド番号です。

// clr_ver.cpp
// compile with: /clr
using namespace System;
int main() {
   Console::WriteLine(__CLR_VER);
}

__cplusplus_cli

/clr/clr:pure、または /clr:safeでコンパイルした場合に定義されます。__cplusplus_cli の値は 200406 です。__cplusplus_cli は翻訳単位で有効になります。

// cplusplus_cli.cpp
// compile with: /clr
#include "stdio.h"
int main() {
   #ifdef __cplusplus_cli
      printf("%d\n", __cplusplus_cli);
   #else
      printf("not defined\n");
   #endif
}

__COUNTER__

ソース ファイルのソース ファイルまたは含まれるヘッダーに使用されるたびに 0 から開始し、1 を乗算する整数に配置します。__COUNTER__ は、プリコンパイル済みヘッダーの使用時に状態が保存されています。

次の例では、同じ型の 3 種類のオブジェクトの一意識別子を割り当てるには __COUNTER__ を使用します。

最初に、次のクラス定義とします。コンストラクターは、パラメーターとして整数を受け取ります。

Main には、アプリケーションに一意識別子のパラメーターとして __COUNTER__ を使用して型 exampleClassの 3 種類のオブジェクトを宣言します。

__cplusplus

C++ プログラムのみに対して定義されます。

_CPPRTTI

/GR でコンパイルしたコードに対して定義されます (ランタイムの型情報を有効にします)。

_CPPUNWIND

/GX でコンパイルしたコードに対して定義されている例外処理を有効にします)。

_DEBUG

/LDd/MDd/MTdでコンパイルした場合に定義されます。

_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

整数型の最大サイズ (ビット) で報告されます。

// integral_max_bits.cpp
#include <stdio.h>
int main() {
   printf("%d\n", _INTEGRAL_MAX_BITS);
}

_M_ALPHA

サポートされなくなった () DEC Alpha プラットフォームに対して定義されます。

_M_AMD64

x64 プロセッサに対して定義されます。

_M_CEE

/clr (/clr:oldSyntax/clr:safe、たとえば) の形式を使用するコンパイルに対して定義されます。

_M_CEE_PURE

/clr:pureを使用するコンパイルに対して定義されます。

_M_CEE_SAFE

/clr:safeを使用するコンパイルに対して定義されます。

_M_IX86

x86 プロセッサに対して定義されます。詳細については、_M_IX86 の値 次の表を参照してください。これは、x64 プロセッサでは定義されていません。

_M_IA64

Itanium の Processor Family の 64 ビット プロセッサに対して定義されます。

_M_ARM_FP

値の /arch のすべてのコンパイラ オプションが使用されているかともに配置します:

  • 範囲 30-39 では /arch の ARM のオプションを指定しないと、ARM の既定のアーキテクチャは、が使用されました (VFPv3)。

  • 範囲 40-49 /arch:VFPv4 が使用された場合。

  • 詳細については、「/arch (x86)」を参照してください。

_M_IX86_FP

値の /arch のすべてのコンパイラ オプションが使用されているかともに配置します:

  • /arch:IA32 が使用される場合は 0。

  • /arch:SSE が使用される場合は 1。

  • /arch:SSE2 が使用される場合は 2。この値は /arch が指定されていない場合は既定値です。

  • 詳細については、「/arch (x86)」を参照してください。

_M_MPPC

サポートされなくなった累乗 () の Macintosh プラットフォーム用に定義されます。

_M_MRX000

() はサポートされなく MIPS プラットフォーム用に定義されます。

_M_PPC

サポートされなくなった ()、PowerPC プラットフォーム用に定義されます。

_M_X64

x64 プロセッサに対して定義されます。

_MANAGED

/clr が指定されたとき 1 であると定義されます。

_MFC_VER

MFC のバージョンを定義します。たとえば、Visual Studio 2010、_MFC_VER は 0x0A00 として定義されます。

_MSC_BUILD

コンパイラのバージョン番号のリビジョン番号のコンポーネントになります。リビジョン番号はピリオドで区切られたバージョン番号の 4 番目のコンポーネントです。たとえば、Visual C++ コンパイラのバージョン番号が 15.00.20706.01 B の場合、_MSC_BUILD のマクロが 1. に評価されます。

_MSC_EXTENSIONS

このマクロは /Ze のコンパイラ オプション (既定値) とコンパイル時に定義されます。この値は、定義した場合、1. です。

_MSC_FULL_VER

コンパイラのバージョン番号のメジャー、マイナー、およびビルド番号のコンポーネントになります。主要な数は、ピリオドで区切られたバージョン番号の最初のコンポーネントで、マイナー番号が 2 番目のコンポーネントであり、ビルド番号は 3 番目のコンポーネントです。たとえば、Visual C++ コンパイラのバージョン番号が 15.00.20706.01 B の場合、_MSC_FULL_VER のマクロは 150020706 に評価されます。コンパイラのバージョン番号を表示するコマンド ラインで cl /? を入力します。

_MSC_VER

コンパイラのバージョン番号のメジャー番号とマイナー番号コンポーネントになります。主要な数は、ピリオドで区切られたバージョン番号の最初のコンポーネントであり、マイナー番号が 2 番目のコンポーネントです。

たとえば、Visual C++ コンパイラのバージョン番号が 15.00.20706.01 B の場合、_MSC_VER のマクロは 1500 に評価されます。

Visual Studio 2010 では、_MSC_VER は 1600 として定義されます。

__MSVC_RUNTIME_CHECKS

/RTC のコンパイラ オプションの 1 つが指定した場合に定義されます。

_MT

/MD または /MDd (マルチスレッド DLL) または /MT または /MTd (マルチスレッド) を指定した場合に定義されます。

_NATIVE_WCHAR_T_DEFINED

/Zc: wchar_t を使用する場合に定義されます。

_OPENMP

/openmp の Visual C++ で実行する OpenMP 仕様の日付を表す整数を返すとコンパイル時に定義されます。

// _OPENMP_dir.cpp
// compile with: /openmp 
#include <stdio.h> 
int main() {
   printf("%d\n", _OPENMP);
}

_VC_NODEFAULTLIB

/Zl を使用する場合に定義されます; 詳細については、/Zl (既定のライブラリ名の省略) を参照してください。

_WCHAR_T_DEFINED

/Zc: wchar_t を使用する場合、または wchar_t がプロジェクトに含まれているシステム ヘッダー ファイルで定義されている場合は定義されます。

_WIN32

Win32 および Win64 のアプリケーションに対して定義されます。これは、常に定義されます。

_WIN64

Win64 のアプリケーションに対して定義されます。

_Wp64

/Wp64を指定した場合に定義されます。

次の表に示すように、コンパイラは指定されたプロセッサが抽出されるプリプロセッサの識別子の値を生成します。

_M_IX86 の値

開発環境の選択

コマンド ライン オプション

結果の値

Expression Blend

/GB

(既定値_M_IX86 = 600。将来のコンパイラが最もプロセッサを反映する別の値を出力します)。

Pentium

/G5

_M_IX86 = 500

II、Pentium Pro、Pentium、Pentium III

/G6

_M_IX86 = 600

80386

/G3

_M_IX86 = 300

80486

/G4

_M_IX86 = 400

参照

関連項目

マクロ (C/C++)

プリプロセッサ演算子

プリプロセッサ ディレクティブ