在此代码中已经定义了 i
(并且尽管是extern
已经初始化了)。现在我读的这本书说:
只有在出现 extern 声明时才可以定义 extern 声明 在一个功能之外。
并没有任何理由支持它。
#include<iostream>
using namespace std;
int main()
{
extern int i=898;
cout<<i<<endl;
return 0;
}
我已经完成了这个问题(类似于Stack Overflow上的这个问题),但解释似乎并不清楚。问题是:
这两个定义在功能范围内有何不同:
int i=898;
extern int i=898;
在这两种情况下,都会分配一个int
大小的内存单元。是由于链接错误?请回答清楚,因为(IMO)它在旧版本中没有令人满意,其参考文献已用于将其标记为重复。
答案 0 :(得分:0)
extern 关键字使编译器不为变量分配内存,指示变量的内存将在全局范围内的链接时解析。您找不到其他答案的链接,所以我回答。