C++ 識別子
識別子は、次のいずれかを示すために使用される文字のシーケンスです。
オブジェクトまたは変数名
クラス、構造体、または共用体の名前
列挙型の名前
クラス、構造体、共用体、または列挙体のメンバー
関数またはクラス メンバー関数
typedef 名
ラベル名
マクロ名
マクロ パラメーター
次の文字は、識別子の最初の文字、および以降の任意の文字として有効です。
_ a b c d e f g h i j k l m
n o p q r s t u v w x y z
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
次の文字は、識別子の最初の文字以外の任意の文字として有効です。
0 1 2 3 4 5 6 7 8 9
Microsoft 固有の仕様 →
Microsoft C++ 識別子の最初の 2048 文字だけが意味を持ちます。 ユーザー定義型の名前はコンパイラによって型情報を保持するように修飾されます。 結果の名前は、型情報を含め、2048 文字を超えることはできません (詳細については、「装飾名」を参照)。 装飾された識別子の長さに影響を与える可能性がある要素は次のとおりです。
識別子が、ユーザー定義型のオブジェクト、またはユーザー定義型から派生した型を表すかどうか。
識別子が、関数または関数から派生した型を表すかどうか。
関数の引数の数。
ドル記号も、Visual C++ での有効な識別子です。
// dollar_sign_identifier.cpp
struct $Y1$ {
void $Test$() {}
};
int main() {
$Y1$ $x$;
$x$.$Test$();
}
END Microsoft 固有の仕様
識別子の先頭文字は、英字 (大文字でも小文字でもかまいません) またはアンダースコア (_) 文字にする必要があります。 C++ の識別子は大文字と小文字が区別されるため、fileName は FileName とは異なります。
識別子をキーワードとまったく同じスペルおよび大文字小文字にすることはできません。 キーワードを含む識別子は有効です。 たとえば、Pint は、int が含まれている場合でも、キーワードとして有効な識別子になります。
識別子の先頭での 2 つの連続するアンダースコア文字 (__)、または 1 つのアンダースコア文字と 1 つの大文字の使用は、すべてのスコープで C++ の実装のために予約されています。 現在または将来の予約済み識別子と競合する可能性があるため、ファイルのスコープを含む名前には、先頭の 1 つのアンダースコアとそれに続く子文字を使用しないようにする必要があります。