注意:这是一个c问题,尽管我加入了c++,以防一些C++专家能够提供C++使用不同措辞的原因或历史背景。
在C标准库规范中,我们有这样的规范文本,C17 7.1.3 保留标识符(强调是我的):
- 所有以下划线和大写字母或另一个下划线开头的标识符始终保留供任何用途使用。
- 所有以下划线开头的标识符始终保留供普通名称空间和标记名称空间中的文件作用域标识符使用。
“保留供任何用途使用”难道不意味着除了C语言本身的未来扩展之外,实现都不允许使用它们吗?
而上述第二个关于单个前导下划线的短语似乎是针对实现的?
总的来说,C标准的写法期望编译器厂商/库实现者成为典型的读者,而不是应用程序员。
值得注意的是,C++的措辞非常不同:
- 任何包含双下划线 (
__
) 或以下划线开头、后面紧跟大写字母的名称 (2.11) 都被实现保留,用于任何目的。
(参见 C++标识符中使用下划线的规则是什么?)
这可能是关于C和C++混淆了,两种语言在这方面有所不同吗?