extern投掷"外部和初始化"错误

时间:2017-05-01 19:49:45

标签: c++ extern

在此代码中已经定义了 i (并且尽管是extern已经初始化了)。现在我读的这本书说:

  

只有在出现 extern 声明时才可以定义 extern 声明   在一个功能之外。

并没有任何理由支持它。

#include<iostream>

using namespace std;

int main()
{
    extern int i=898;
    cout<<i<<endl;
    return 0;
}

我已经完成了这个问题(类似于Stack Overflow上的这个问题),但解释似乎并不清楚。问题是:

这两个定义在功能范围内有何不同:

  1. int i=898;

  2. extern int i=898;

  3. 在这两种情况下,都会分配一个int大小的内存单元。是由于链接错误?请回答清楚,因为(IMO)它在旧版本中没有令人满意,其参考文献已用于将其标记为重复。

1 个答案:

答案 0 :(得分:0)

extern 关键字使编译器不为变量分配内存,指示变量的内存将在全局范围内的链接时解析。您找不到其他答案的链接,所以我回答。