C++ キーワード
キーワードは、特別な意味を持つ定義済みおよび予約済みの識別子です。 プログラムでは、キーワードを識別子として使用することはできません。 次のキーワードは Microsoft C++ 用に予約されています。 先頭にアンダースコアが付いているキーワードは Microsoft の拡張機能です。
__box 2 |
||
__gc 2 |
||
__hook 3 |
||
__nogc 2 |
||
__pin 2 |
||
__sealed 2 |
||
__unhook 3 |
||
__value 2 |
||
naked 1 |
||
noinline 1 |
noreturn 1 |
|
nothrow 1 |
novtable 1 |
|
property 1 |
||
thread 1 |
||
uuid 1 |
||
1 __declspec キーワードの拡張属性。
2 C++ のマネージ拡張にのみ適用。 この構文は現在使用されていません。
3 イベント処理に使用される組み込み関数。
詳細については、「ランタイム プラットフォームのコンポーネントの拡張機能」を参照してください。
Microsoft 固有の仕様 →
Microsoft C++ では、先頭に 2 つのアンダースコアが付いている識別子はコンパイラ実装用に予約されています。 Microsoft の規約では、Microsoft 固有のキーワードには先頭に 2 つのアンダースコアを付けることになっています。 したがって、これらの単語を識別子名として使用することはできません。
Microsoft 拡張機能は既定で有効になっています。 完全に移植性のあるプログラムにするには、ANSI 互換の /Za コマンド ライン オプション (ANSI 互換性維持のためのコンパイル) を指定してコンパイル中に Microsoft 拡張機能を無効にできます。 これにより、Microsoft 固有のキーワードが無効になります。
Microsoft 拡張機能を有効にすると、Microsoft 固有のキーワードをプログラム内で使用できます。 ANSI 準拠のために、これらのキーワードは 2 つのアンダースコアで始まります。 下位互換性維持のために、アンダースコア 2 文字のキーワードの、アンダースコア 1 文字のバージョンがサポートされています。ただし、__except、__finally、__leave、__try は除きます。 また、__cdecl は先頭にアンダースコアなしで使用できます。
__asm キーワードは C++ の asm 構文に置き換わるものです。 asm は他の C++ 実装との互換性を維持するために予約されていますが、実装されていません。 __asm を使用してください。
__based キーワードには、32 ビットおよび 64 ビット ターゲット コンパイルに関する使用制限があります。