在我们的项目中,我们决定使用下划线为成员变量和一些私有/受保护方法添加前缀(所以使用“_
”)。
在讨论期间,声称不鼓励这样做,因为某些平台上的某些编译器/链接器存在某些不兼容性。因为我们想要尽可能便携,所以我想确定。
我还认为that prefixing globals with underscores in C可能是个问题。
这同样适用于C ++ - 链接,如果适用,在哪些情况下(平台/编译器/链接器)?
答案 0 :(得分:12)
来自C ++ 03标准:§17.4.3.1.2/ 1
某些名称和功能签名集始终保留给实现:
包含双下划线(
__
)或以下划线后跟大写字母(2.11)开头的每个名称都保留给实现以供任何使用。以下划线开头的每个名称都保留给实现,以用作全局命名空间中的名称。
C ++11§17.6.4.3.2/ 1
中提供了等效文本答案 1 :(得分:5)
就个人而言,我使用m_name
,其中'm'代表'会员'。
顺便说一下,我还在函数中使用p_
,在少数不可避免的全局变量中使用g_
。
(然后我经常被SO用户抨击,因为它看起来像匈牙利表示法;-)但它不是。)
答案 2 :(得分:2)
请看这里:What are the rules about using an underscore in a C++ identifier?
我看过很多代码使用单个下划线作为标识符中的前缀或双下划线,它只是起作用。但你永远不知道。标识符是保留的,可能会发生任何事情,具体取决于编译器。