在此代码 i
中已定义(尽管extern
是初始化的(。现在我正在阅读的书说:
an extern 声明只有在似乎是 在功能外部。
它没有任何理由。
#include<iostream>
using namespace std;
int main()
{
extern int i=898;
cout<<i<<endl;
return 0;
}
我已经解决了这个问题(类似于堆栈溢出上的这个问题(,但是解释似乎并不清楚。问题是:
这两个定义如何在函数范围上有所不同:
int i=898;
extern int i=898;
在这两种情况下,正在分配一个单位int
大小内存。是由于链接错误吗?请清楚回答(IMO(,它在较旧版本中并不令人满意,其引用已被用来将其标记为重复。
extern 关键字使编译器无法为变量分配内存,这表明该变量的内存将在全局范围中的链接时间解决。您与另一个答案的链接不可用,所以我回答了。