是否允许全局静态标识符以单个_开头?

时间:2016-08-17 13:22:10

标签: c

换句话说, static (=文件作用域)全局变量是否只用一个下划线开头,而不会在C实现中创建名称冲突的可能性?

https://www.gnu.org/software/libc/manual/html_node/Reserved-Names.html 说...“保留名称包括以下划线('_')开头的所有外部标识符(全局函数和变量)......”(强调我的)。

我注意到Linux内核启动的功能可能不应该直接用双下划线调用。

我觉得这个概念很有用,我发现_(_)something在区分“私人”标识符方面比something_稍微容易阅读,但我理解(?)双下划线邀请名称冲突与C实施。

全球,静态 _variables_functions是否安全?

2 个答案:

答案 0 :(得分:4)

标准保留带有下划线 1 的前缀。

1 (引自:ISO/IEC 9899:201x 7.1.3保留标识符1)
所有以下划线和大写字母或其他字母开头的标识符 下划线总是保留用于任何用途 所有以下划线开头的标识符始终保留用作标识符 在普通名称和标签名称空间中都有文件范围。

答案 1 :(得分:2)

这不安全。根据体系结构,您的代码可能需要对static个对象进行一些重定位。因此,链接器必须可以看到它们的名称以及CRT符号的名称。这可能会引起冲突。