换句话说, static (=文件作用域)全局变量是否只用一个下划线开头,而不会在C实现中创建名称冲突的可能性?
https://www.gnu.org/software/libc/manual/html_node/Reserved-Names.html 说...“保留名称包括以下划线('_')开头的所有外部标识符(全局函数和变量)......”(强调我的)。
我注意到Linux内核启动的功能可能不应该直接用双下划线调用。
我觉得这个概念很有用,我发现_(_)something
在区分“私人”标识符方面比something_
稍微容易阅读,但我理解(?)双下划线邀请名称冲突与C实施。
全球,静态 _variables
和_functions
是否安全?
答案 0 :(得分:4)
标准保留带有下划线 1 的前缀。
1 (引自:ISO/IEC 9899:201x 7.1.3保留标识符1)
所有以下划线和大写字母或其他字母开头的标识符
下划线总是保留用于任何用途
所有以下划线开头的标识符始终保留用作标识符
在普通名称和标签名称空间中都有文件范围。
答案 1 :(得分:2)
这不安全。根据体系结构,您的代码可能需要对static
个对象进行一些重定位。因此,链接器必须可以看到它们的名称以及CRT符号的名称。这可能会引起冲突。