gpt4 book ai didi

c++ - 全局范围内的匿名 namespace 内的名称可以有前导下划线吗?

转载 作者:可可西里 更新时间:2023-11-01 17:42:26 27 4
gpt4 key购买 nike

根据规范,不允许使用前导下划线的全局名称:

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

这是否也适用于在顶级匿名命名空间中定义的名称?

最佳答案

以前导下划线开头,后跟非大写字母数字字符且不包括双下划线的名称仅在全局命名空间中保留。这样做的原因是在某些系统上某些名称需要有一个前导下划线或者已经被底层操作系统和/或其 C 库使用。匿名命名空间中的名称没有这个问题。

也就是说,我一直想知道为什么人们如此热衷于使用丑陋的名字!除非我处于标准库实现模式(我实际上必须使用丑陋的名称以免与用户名冲突)我总是想知道我是否在我的代码中的任何地方使用前导下划线做错了什么!在极少数情况下需要前导下划线(例如调用 _exit() 或使用 std::bind() 的占位符时),但通常用户不应触摸它们:既不使用也不定义它们。

关于c++ - 全局范围内的匿名 namespace 内的名称可以有前导下划线吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8692013/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com