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$();
}

结束 Microsoft 专用

标识符的第一个字符必须是字母字符(大写、小写或带下划线 (_) 的字母)。 由于 C++ 标识符区分大小写,因此 fileName 与 FileName 不同。

标识符不能与关键字有完全相同的拼写和大小写。 包含关键字的标识符是合法的。 例如,Pint 是一个合法标识符,即使它包含 int 关键字。

在标识符开头使用两个顺序下划线字符 (__) 或在单个前导下划线后跟一个大写字母的用法是专为所有范围的 C++ 实现保留的。 由于当前或将来的保留标识符可能发生冲突,因此应避免对文件范围的名称使用一个前导下划线后跟小写字母。

请参见

参考

词法约定