extern int a = 10; // it is not giving error
int main ()
{
extern int b = 10; //it is giving error
return 0;
}
错误:'b'同时包含'extern'和初始化程序 extern int b = 10;
答案 0 :(得分:1)
参考C11(N1570)6.7.9 / 5 初始化:
如果标识符的声明具有块范围,则 标识符有外部或内部链接,声明应该 标识符没有初始化程序。
规则放在约束部分,因此任何符合规范的编译器都应该拒绝违反它的代码。
块范围内extern
关键字的要点是从外部范围声明某些现有对象。声明一个对象并在声明时给它一些其他值没有多大意义。
声明外部对象的推荐方法是将其声明放在文件范围内(位于源代码的顶部),因此维护程序员很容易发现和管理它们。