【发布时间】:2010-02-27 19:46:58
【问题描述】:
AFAIK,extern 关键字应该用于声明,并且没有值可以与使用 extern 关键字声明的变量相关联。但是假设我写了这样的声明
extern int i = 10;
编译器是否应该标记相同的错误?我已经看到一些编译器容忍并忽略了这一点?为什么会这样? 'C' 标准对此有何规定?
编辑:@All,感谢您的回答。不过,我仍有疑问。假设我有这个变量的定义,而另一个文件中没有外部链接,比如 a.c,我在 b.c 中添加了这个语句。编译器仍然可以不标记错误吗?它会被重新定义吗?
【问题讨论】:
-
不,因为这实际上是定义而不是声明。
-
LLVM 抛出警告:“extern variable has an initializer”