定義済みマクロ

提供: RAD Studio
移動先: 案内検索

プリプロセッサ:インデックス への移動


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__

  • メジャー バージョン番号はビット 31 ~ 24
  • マイナー バージョン番号はビット 23 ~ 16
  • 内部バージョン番号はビット 15 ~ 0

この内部マクロは、コンパイラのメジャー バージョン番号、マイナー バージョン番号、および内部番号をコード化した整数に展開されます。「__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 macOS をターゲットとしたクロス コンパイルをサポートするコンパイラでのみ定義されます。

_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)
  • 0x0740 for C++Builder Rio(BCC32C、BCC32、BCC64、BCCOSX、BCCIOSARM、BCCIOSARM64、BCCAARM、BCC32X)
  • 0x0750 for C++Builder Sydney(BCC32C、BCC32、BCC64、BCCOSX、BCCIOSARM、BCCIOSARM64、BCCAARM、BCC32X)。
  • 0x0760 for C++Builder Alexandria (BCC32C, BCC32, BCC64, BCCOSX, BCCIOSARM, BCCIOSARM64, BCCAARM, and BCC32X).

コンパイラ バージョン」も参照してください。

他で定義されているマクロ

以下のマクロは、#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」を参照。

関連項目