定義済みマクロ
プリプロセッサ:インデックス への移動
C++ コンパイラでは、マニフェスト定数と呼ばれる、ある種のグローバル識別子があらかじめ定義されています。 大半のグローバル識別子は、先頭と末尾に 2 重の下線記号(__)が付きます。
- メモ: 読みやすくするために、これらの下線記号を 1 つのスペースで区切ることがよくあります。 ソース コードでは、下線記号の間にスペースを挿入しないでください。
値が 0x0nnn
という形式になっているマクロのバージョン番号の部分(nnn
)は、関連する C++ コンパイラ実行可能ファイルのバージョン番号によって決まります。XE リリース以降では、BCC32.EXE に --version
オプションを指定すると、バージョン番号を確認することができます。
マクロ | 値 | 説明 |
---|---|---|
__ANDROID__ |
Android 製品をターゲット プラットフォームとするクロス コンパイルをサポートしているコンパイラ(下記)でのみ定義されています。 | |
__APPLE__ |
Apple 製品をターゲット プラットフォームとするクロス コンパイルをサポートしているコンパイラ(下記)でのみ定義されています。 | |
__arm__ |
32 ビット ARM コンパイラ アーキテクチャ向けのクロス コンパイルをサポートしているコンパイラ(下記)でのみ定義されています。 | |
__arm64__ |
ARM64 コンパイラ アーキテクチャ向けのクロス コンパイルをサポートしているコンパイラ(下記)でのみ定義されています。 | |
__BCOPT__ |
1 |
最適化をサポートしているコンパイラにのみ定義されるため、常に定義されています。 |
__BCPLUSPLUS__ |
このトピックの「C++ コンパイラ バージョン」に値の一覧を示します。 |
C++ によるコンパイルを選択した場合に定義されます。今後のリリースでは値が大きくなります。 |
__BOOL__ |
1 |
bool キーワードが受け入れられたことを示します。 |
__BORLANDC__ |
このトピックの「C++ コンパイラ バージョン」に値の一覧を示します。 |
バージョン番号。 |
__CDECL__ |
1 |
呼び出し規約を cdecl に設定した場合に定義され、それ以外の場合には定義されません。 |
_CHAR_UNSIGNED |
1 |
デフォルトでは定義されていません。-K スイッチを使用して デフォルトの char を unsigned char にすると、このマクロが定義されます。最終的に、-K オプションは、int に変換されたときに char がどう拡張されるかを制御します。デフォルトでは、コンパイラは符号拡張を行いますが、_CHAR_UNSIGNED を有効にした場合、コンパイラは char を int に変換する際にゼロ拡張を行います。 |
__clang__ |
1 |
Clang 拡張 C++ コンパイラが使用中であるかどうかを定義します。 Clang の組み込みマクロを参照。 |
__CODEGEARC__ |
このトピックの「C++ コンパイラ バージョン」に値の一覧を示します。 |
バージョン番号。 |
__CODEGEARC_VERSION__ |
|
この内部マクロは、コンパイラのメジャー バージョン番号、マイナー バージョン番号、および内部番号をコード化した整数に展開されます。「__CODEGEARC_VERSION__ マクロの例」を参照。 |
__CODEGUARD__ |
CodeGuard コンパイラ オプションのいずれかが使用される場合は常に定義されますが、それ以外の場合には定義されません。 | |
__CONSOLE__ |
1 |
このマクロが定義されている場合、プログラムがコンソール アプリケーションであることを示します。 |
_CPPUNWIND |
1 |
スタックのアンワインドを有効にします。デフォルトでは有効になっています。無効にするには -xd-!ALink(OSCGExceptions1) を使用します。 |
__cplusplus |
1 |
C++ モードの場合に定義され、それ以外の場合には定義されません。 |
__DATE__ |
文字列リテラル |
現在のソース ファイルの処理が開始された日付。 |
__DLL__ |
1 |
コンパイラ オプション -WD が使用される場合は常に定義されますが、それ以外の場合には定義されません。 |
__FILE__ |
文字列リテラル |
現在処理中のソース ファイルの名前。 |
__FLAT__ |
1 |
32 ビットのフラット メモリ モデルでコンパイルする場合に定義されます。 |
__FUNC__ または __FUNCTION__ |
文字列リテラル |
現在処理中の関数の名前(詳細)。 |
__LINE__ |
10 進定数 |
現在処理中のソース ファイルの行番号。 |
__MACH__ |
MAC OS X をターゲットとしたクロス コンパイルをサポートするコンパイラでのみ定義されます。 | |
_M_IX86 |
0x12c |
常に定義されます。デフォルト値は 300 です。値を 400 に変更する場合はコンパイラ オプション /4 を使用し、値を 500 に変更する場合はコンパイラ オプション /5 を使用します。 |
__MT__ |
1 |
-tWM オプション使用時にのみ定義されます。これはマルチスレッド ライブラリをリンクすることを指定します。 |
__PASCAL__ |
1 |
呼び出し規約を Pascal に設定した場合に定義され、それ以外の場合には定義されません。 |
_PUSHPOP_SUPPORTED |
1 |
常に定義されており、機能がサポートされているかどうかを確かめるのに Microsoft 標準ヘッダーでプッシュとポップを使用できるようになります。 |
_STDCALL_SUPPORTED |
1 |
常に定義されており、Microsoft の stdcall 呼び出し規約を定義します。 |
__STDC__ |
1 |
-A オプションを指定してコンパイルする場合に定義され、それ以外の場合には定義されません。 |
__TCPLUSPLUS__ |
このトピックの「C++ コンパイラ バージョン」に値の一覧を示します。 |
バージョン番号。 |
__TEMPLATES__ |
1 |
C++ ファイルの場合には 1 と定義されます(テンプレートがサポートされていることを意味します)が、それ以外の場合には定義されません。 |
__TIME__ |
文字列リテラル |
現在のソース ファイルの処理が開始された時刻。 |
__TLS__ |
1 |
スレッド ローカル ストレージ(TLS)を使用します。常に有効です。 |
__TURBOC__ |
このトピックの「C++ コンパイラ バージョン」に値の一覧を示します。 |
今後のリリースでは値が大きくなります。 |
_UNICODE および UNICODE |
VCL を使用している C++ プログラムに対して定義されます。 | |
_WCHAR_T |
C++ プログラムの場合にのみ定義され、wchar_t が組み込み定義データ型であることを示します。 | |
_WCHAR_T_DEFINED |
C++ プログラムの場合にのみ定義され、wchar_t が組み込み定義データ型であることを示します。 | |
_Windows |
1 |
Windows プラットフォームでコンパイルする場合に定義されます。 |
__WIN32__ |
1 |
32 ビット Windows プラットフォーム上のコンソール アプリケーションと GUI アプリケーションの場合に定義されます。 |
_WIN64 |
1 |
64 ビット Windows プラットフォーム上のコンソール アプリケーションと GUI アプリケーションの場合に定義されます。 |
- メモ:
- 定義済みマクロ __DATE__、__FILE__ 、__FUNC__、__LINE__、__STDC__、__TIME__ を再定義または未定義にすることはできません。
- Clang 拡張 C++ コンパイラでサポートされている定義済みマクロの全リストを確認するには、「定義済みマクロ」を参照してください。
定義済みマクロの C++ コンパイラ バージョン
C++ コンパイラに定義されているマクロ(__CODEGEARC__ など)には、以下のバージョン番号が付けられています。
- 0x0570:Developer Studio 2006
- 0x0590:C++Builder 2007
- 0x0591:C++Builder 2007 update 1
- 0x0592:RAD Studio 2007
- 0x0593:RAD Studio 2007 の 12 月の Update
- 0x0610:C++Builder 2009 および C++Builder 2009 Update 1
- 0x0620:C++Builder 2010 および C++Builder 2010 Update 1
- 0x0621:C++Builder 2010 Update 2
- 0x0630:C++Builder XE
- 0x0631:C++Builder XE Update 1
- 0x0640:C++Builder XE2
- 0x0650:C++Builder XE3 および C++Builder XE3 Update 1
- 0x0651:2013 年 1 月 Update(BCC32 および BCCOSX)、0x0650 のままの BCC64
- 0x0660:C++Builder XE4 (BCC32 および BCCOSX)、 0x0650 のままの BCC64
- 0x0670:C++Builder XE5 (BCC32、BCC64、BCCOSX、BCCIOSARM)
- 0x0680:C++Builder XE6 (BCC32、BCC64、BCCOSX、BCCIOSARM、BCCAARM)
- 0x0690:C++Builder XE7 (BCC32、BCC64、BCCOSX、BCCIOSARM、BCCAARM)
- 0x0700:C++Builder XE8 (BCC32、BCC64、BCCOSX、BCCIOSARM、BCCIOSARM64、BCCAARM)
- 0x0710: C++Builder Seattle(BCC32C、BCC32、BCC64、BCCOSX、BCCIOSARM、BCCIOSARM64、BCCAARM)
- 0x0711:C++Builder Seattle Subscription Update 1 (BCC32)、0x0710 のままの他のコンパイラ
- 0x0720:C++Builder Berlin (BCC32C、BCC32、BCC64、BCCOSX、BCCIOSARM、BCCIOSARM64、BCCAARM)
- 0x0730 for C++Builder Tokyo(BCC32C、BCC32、BCC64、BCCOSX、BCCIOSARM、BCCIOSARM64、BCCAARM)。
「コンパイラ バージョン」も参照してください。
他で定義されているマクロ
以下のマクロは、#include System.hpp
を使用する際の下位互換性のために定義されています。
マクロ | 値 | 説明 |
---|---|---|
ANSISTRING_AS_TEMPLATE |
AnsiString 型がテンプレート クラス AnsiString<T> として定義されます。 | |
_STRINGCHECKS_OFF |
これまでのリリースでは、C++ プログラムは、Delphi コンパイラで STRINGCHECKS 指令が設定されないと見なしていました。Delphi コンパイラでは STRINGCHECKS 指令をサポートしなくなったため、それに関係のある _STRINGCHECKS_OFF C++ マクロも不要であり、もう設定されません。そのため、バージョン 2009 以前のコードを現在のバージョンに移行する場合は、イベント ハンドラのシグネチャを更新する必要があります(バージョン 2009 以前のイベント ハンドラでは AnsiString を想定しているのに対して、ランタイムでは現在 UnicodeString を渡すからです)。「RAD Studio における Unicode」を参照。 |