C++ キーワード

キーワードは、特別な意味を持つ定義済みおよび予約済みの識別子です。 プログラムでは、キーワードを識別子として使用することはできません。 次のキーワードは Microsoft C++ 用に予約されています。 先頭にアンダースコアが付いていて、C++/CX および C++/CLI に指定された名前は Microsoft 拡張機能です。

標準の C++ キーワード

constinitc
continue
co_awaitc
co_returnc
co_yieldc
decltype
default
delete
do
double
dynamic_cast
else
enum
explicit
exportc
extern
false
float
for
friend
goto
if
inline

a Microsoft 固有の __asm キーワードを指定すると、C++ の asm 構文が置き換えられます。 asm は他の C++ 実装との互換性を維持するために予約されていますが、実装されていません。 x86 ターゲットでインライン アセンブリに __asm を使用します。 Microsoft C++ では、他のターゲットのインライン アセンブリはサポートされていません。

b 拡張演算子のシノニムは、/permissive- または /Za (言語拡張機能を無効にする)が指定されている場合のキーワードです。 Microsoft 拡張機能が有効になっている場合、キーワードではありません。

c は、/std:c++20 以降 (/std:c++latest など) が指定されている場合にサポートされます。

Microsoft 固有の C++ キーワード

C++ では、2 つの連続するアンダースコアを含む識別子は、コンパイラの実装用に予約されています。 Microsoft の規約では、Microsoft 固有のキーワードには先頭に 2 つのアンダースコアを付けることになっています。 これらの単語を識別子名として使用することはできません。

Microsoft 拡張機能は既定で有効になっています。 完全に移植性のあるプログラムにするには、コンパイル時に /permissive- または /Za (言語拡張機能の無効化) オプションを指定することで、Microsoft 拡張機能を無効にできます。 これらのオプションでは、一部の Microsoft 固有キーワードが無効になります。

Microsoft 拡張機能を有効にすると、Microsoft 固有のキーワードをプログラム内で使用できます。 ANSI 準拠のために、これらのキーワードは 2 つのアンダースコアで始まります。 下位互換性維持のために、アンダースコア 2 文字のキーワードの多くに対して、アンダースコア 1 文字のバージョンがサポートされています。 __cdecl キーワードは先頭にアンダースコアなしで使用できます。

__asm キーワードは C++ の asm 構文に置き換わるものです。 asm は他の C++ 実装との互換性を維持するために予約されていますが、実装されていません。 __asm を使用してください。

__based キーワードには、32 ビットおよび 64 ビット ターゲット コンパイルに関する使用制限があります。

d イベント処理に使用される組み込み関数。

e 以前のバージョンとの下位互換性のため、これらのキーワードは先頭に 2 つのアンダースコアが付いているものだけでなく、Microsoft の拡張機能を有効にしている場合 (既定) は 1 つのアンダースコアが付いているものも使用できます。

__declspec 修飾子内の Microsoft キーワード

これらの識別子は、__declspec 修飾子の拡張属性です。 これらは、そのコンテキスト内のキーワードと見なされます。

C++/CLI および C++/CX キーワード

__abstractf
__boxf
__delegatef
__gcf
__identifier
__nogcf
__noop
__pinf
__propertyf
__sealedf

f C++ のマネージド拡張にのみ適用。 この構文は現在非推奨とされます。 詳細については、「 Component Extensions for Runtime Platforms」を参照してください。

g C++/CLI に適用。

関連項目

字句表記規則
C++ の組み込み演算子、優先順位、結合規則