joh*_*dka 11 c static gcc extern
这是交易.我在两个不同的.c文件中有两个相同的全局变量,它们没有被声明为extern.所以每个.c文件都应该看到自己的变量,对吧?
但是我得到了一些非常奇怪的行为,好像一个文件正在读取其他文件变量(将它们链接在一起之后).将"静态"限定符添加到两个变量定义似乎解决了这个问题.
所以我真正想知道的是,在没有'静态'限定符的情况下究竟发生了什么?
cni*_*tar 18
所以每个.c文件都应该看到自己的变量,对吧?
错误.在C中,省略static声明意味着隐式extern链接.
static
extern
来自C in a Nutshell:
编译器在没有存储类说明符的情况下处理函数声明,就像它们包含说明符extern一样.同样,您在所有函数外部声明且没有存储类说明符的任何对象标识符都具有external linkage.
external linkage
归档时间:
14 年,9 月 前
查看次数:
7493 次
最近记录:
11 年,7 月 前