外部抛出"both extern and initializer"错误



在此代码 i 中已定义(尽管extern是初始化的(。现在我正在阅读的书说:

an extern 声明只有在似乎是 在功能外部。

它没有任何理由。

#include<iostream>
using namespace std;
int main()
{
    extern int i=898;
    cout<<i<<endl;
    return 0;
}

我已经解决了这个问题(类似于堆栈溢出上的这个问题(,但是解释似乎并不清楚。问题是:

这两个定义如何在函数范围上有所不同:

  1. int i=898;

  2. extern int i=898;

在这两种情况下,正在分配一个单位int大小内存。是由于链接错误吗?请清楚回答(IMO(,它在较旧版本中并不令人满意,其引用已被用来将其标记为重复。

extern 关键字使编译器无法为变量分配内存,这表明该变量的内存将在全局范围中的链接时间解决。您与另一个答案的链接不可用,所以我回答了。

最新更新