c++标识符须以字母或下划线开头,不可用数字或关键字;区分大小写,仅允许字母、数字、下划线;避免双下划线及下划线加大写字母;前63字符应保证唯一性以防odr违规。

标识符不能以数字开头
这是最常踩的坑:int 123var; 直接编译失败,报错类似 error: expected unqualified-id。C++ 规定标识符必须以字母(a–z、A–Z)或下划线 _ 开头,后续字符才可包含数字(0–9)。所以 var123 和 _count 合法,123var 和 99bugs 都非法。
不能使用 C++ 关键字作标识符
比如把 class、return、template 当变量名会触发编译错误,典型提示是 error: expected unqualified-id before ‘{’ token 或更直白的 error: ‘class’ declared as a template(如果上下文触发了模板解析歧义)。C++20 有 92 个关键字,像 concept、consteval 这类新关键字也得避开。可用编译器加 -std=c++20 搭配 g++ -dD -E /dev/null | grep "^#define.*[a-z]" 辅助查保留字表,但更稳妥的是依赖 IDE 的语法高亮——灰色/蓝色高亮的关键字绝不能用作标识符。
区分大小写且不能含空格或特殊符号
myVariable 和 myvariable 是两个不同标识符;my-var、my var、my@var 全部非法——连短横线 - 都不行(它被解析为减号运算符)。只允许字母、数字、下划线,且连续下划线在全局作用域有隐含含义(如 __foo 是实现保留),普通代码里尽量避免双下划线或以下划线加大写字母开头(如 _Foo),否则可能撞上编译器或标准库的内部命名规则。
长度限制实际取决于编译器,但前 1024 位通常可靠
C++ 标准只要求编译器至少识别前 63 个字符(C++11 起提升到 1024),超出部分可能被截断或忽略。例如 very_long_variable_name_with_suffix_001 和 very_long_variable_name_with_suffix_002 如果前 1024 字符完全相同,某些旧编译器会认为它们是同一个标识符,引发 ODR(One Definition Rule)违规。现代 clang/g++ 一般支持长于 1024,但跨平台项目中仍建议把关键区分部分控制在前 63 位内,尤其涉及模板特化或导出符号时。
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











