下划线不是“编码约定”,而是为了避免与用户定义的宏等发生名称冲突。
来自https://www.gnu.org/software/libc/manual/html_node/Reserved-Names.html(这实际上适用于 libc,但我认为它也适用于 libstdc++):
除了本手册中记录的名称之外,保留名称还包括以下划线 ('_') 开头的所有外部标识符(全局函数和变量)以及所有以两个下划线开头或一个下划线后跟大写字母是保留名称。这样库和头文件可以为内部目的定义函数、变量和宏,而不会有与用户程序中的名称冲突的风险。
GNU 网站还提供了有关更多保留名称的更多信息。另请参阅此问题的答案。看起来 C++ 标准本身规定了命名约定。
更新:
OP 请求的信息似乎有点分散在不同的页面上。我将尝试总结以下最重要的几点:
首先,可以在此处找到有关名称(如_T或 )的信息。_M_
摘抄:
对于出现在标准标题中的非标准名称,我们被限制使用以下划线开头的名称。这被称为“丑化”。公约是: [...]
类型名称和模板形式参数名称:_[AZ][^_].*
示例:_Helper _CharT _N
成员数据和函数名称:_M_.*
例子:_M_num_elements _M_initialize()
静态数据成员、常量和枚举:_S_.*
示例:_S_max_elements _S_default_value
进一步挖掘将我带到libstdc++ 贡献页面,它说:
GNU C++ 库是 GCC 的一部分并遵循相同的开发模型,因此适用于 GCC的一般规则。
按照上面的链接,您将到达 GNU GCC 贡献页面,在那里阅读(在编码标准下)
所有贡献都必须符合 GNU 编码标准。GCC 还有一些额外的编码约定;这些包括文档和测试套件要求以及对代码格式的要求。
不符合标准的提交将被退回,并要求解决任何此类问题。为了帮助准备补丁,您可以使用脚本 contrib/check_GNU_style.sh。
这最终将导致GCC 编码约定,这是一个通用指南。
我希望这能提供一些更好的信息。
| 归档时间: |
|
| 查看次数: |
720 次 |
| 最近记录: |