C++编程中在变量名中使用下划线是否属于不良命名方式?
C++变量名使用下划线的准确结论
语法规则层面(强制要求,违反会触发未定义行为或编译错误)
C++标准从未禁止在变量名中使用下划线,你之前的认知基本准确,只要避开以下3类标准明确保留给编译器、标准库实现的标识符写法,用下划线完全符合语法要求:
- 禁止在任意作用域、任意位置使用连续两个下划线,比如
user__id、__user_id这类写法都属于违规的保留标识符 - 禁止使用下划线加大写字母开头的标识符,比如
_UserId,全场景保留给语言实现使用 - 全局作用域下禁止使用下划线开头的标识符,比如全局变量
_user_count属于违规写法
补充:函数、类内部的局部变量以下划线开头,语法上不属于标准禁止的范畴,但工业界普遍不推荐这么写,很容易和保留标识符规则混淆,平白增加出错风险。
命名风格层面(非强制,随场景约定变化)
你朋友提到的“不能用下划线”的说法,本质是特定场景下的命名风格要求,不是C++语言的通用规则:
- 用下划线分隔小写单词的蛇形命名(例如
user_login_count)是C领域非常主流的命名方式,C标准库、STL源码、Google C++编码规范、LLVM项目规范等大量工业级实践都在广泛使用,不存在“用了就是写错了”的说法 - 部分教材、课程老师或者开发团队会统一要求使用驼峰命名法(例如
userLoginCount),这种场景下会要求不要用下划线做单词分隔——这是小范围的风格约定,既不是语法强制要求,也不是全行业统一的通用规范。
给初学者的实操建议
- 先明确区分「语法硬规则」和「风格软约定」:不碰前面列的3个语法雷区,变量名里用下划线不会导致任何编译错误、运行异常,完全是合法可用的写法
- 个人写练习代码时选自己读着顺的风格即可;参与团队项目、提交课程作业时,对齐对应场景的统一命名要求就可以,不用把某一种风格当成绝对正确的标准答案。
内容的提问来源于stack exchange,提问作者magui gonzález
相关产品推荐
相关产品推荐

