2

可能重复:
在 C++ 标识符中使用下划线的规则是什么?

我对标准中的相关部分感兴趣(如果有的话)。

4

2 回答 2

8

是的,当下划线后跟另一个下划线或大写字母时(即预处理器#defines 或宏),或者如果标识符位于全局命名空间中(第 17.6.4.3.2 节):

某些名称和函数签名集始终保留给实现:

— 每个包含双下划线 _ _ 或以下划线后跟大写字母 (2.12) 的名称都保留给实现以供任何使用。

— 每个以下划线开头的名称都保留给实现用作全局名称空间中的名称。

请注意,第一点意味着如果两个下划线出现在标识符中的任何位置,即使在中间或末尾,名称都是保留的。另外,我会补充(§17.6.4.3.5,强调我的):

以下划线开头的文字后缀标识符保留用于将来的标准化。

于 2012-10-16T22:13:37.707 回答
0

它们不是保留的,for但您不应该使用它们,因为编译器开发人员可能会使用它们来命名自己的函数,因此它可能与您的函数冲突。因此,如果您使用my_class::_function那么应该没有错误,但是编写一个全局函数,例如void _function()可能会使用一个编译器生成一个副本!

于 2012-10-16T22:14:08.297 回答