此问题已在此处有答案:
Why do people use __ (double underscore) so much in C++(7个回答)
3天前关闭。
我对C了解得越多,我就越觉得C标准库源代码(所有这些std
函数都是在那里实现的)大量使用带有__
前缀的变量名。像std::addressof()
使用__r
作为其单个参数。我试图得到有意义的答案,为什么会这样(甚至问ChatGPT!)但没有运气。我知道__
前缀是保留的,用户代码不能使用这样的名称。但是,用户代码怎么会与std
中的函数参数名发生冲突呢?这就是我想不通的地方std
中的私有成员也是如此。甚至局部变量也以__
前缀开头!在这些情况下使用__
前缀有什么意义?这几乎就像标准库实现者通过他们的实践建议,以某种方式对用户代码隐藏实现细节取决于这种约定。如果没有这种做法,用户可能会以某种方式依赖那些“不适合他们”的名称。
顺便说一下,这使得C++标准库源代码更难阅读。也许是故意的。
1条答案
按热度按时间h9a6wy2h1#
假设他们会使用“普通”标识符。假设实现使用
foo
作为标识符。然后你可以写这样的代码:如果
some standard header
使用标识符foo
,可能会发生不好的事情。这就是为什么在实现中要保留某些标识符的原因。你不能使用它们,否则可能会有冲突。实现必须使用它们,否则可能会出现上述冲突。
详情请看这里:https://en.cppreference.com/w/cpp/language/identifiers