关于c ++:以下划线(_)为前缀的类成员

Class members prefixed with underscore (_)

本问题已经有最佳答案,请猛点这里访问。

在我们的项目中,我们决定在成员变量和一些私有/受保护的方法前面加下划线(因此加上"_"。

在一次讨论中,有人声称不鼓励这样做,因为某些平台上的某些编译器/链接器不兼容。因为我们想成为一个尽可能便携式,我想确定。

我还认为,用C中的下划线在全球前缀可能是一个问题。

是否同样适用于C++链接,如果是,那么在哪种情况下(平台/编译器/链接器)?


从C++ 03标准:(7.4.4.3.1.2/1)

Certain sets of names and function signatures are always reserved to the implementation:

  • Each name that contains a double underscore (__) or begins with an underscore followed by an upper-case letter (2.11) is reserved to the implementation for any use.

  • Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace.

等效文本存在于C++ 11中:7.4.4.3.2/1。


就我个人而言,我使用m_name,其中"m"代表"member"。

顺便说一下,我在函数中也使用了p_作为参数,在一些不可避免的全局中使用了g_

(然后我通常会被so用户抨击,因为它看起来像匈牙利符号;-)但是它不是。)


请注意:在C++标识符中使用下划线的规则是什么?

我已经看到很多代码使用单下划线作为前缀,或者在标识符中使用双下划线,这很简单。但你永远不知道。标识符是保留的,根据编译器的不同,可能会发生任何事情。