使用编译器进行外部初始化时出错C++



我写了以下代码

#include<iostream>
using namespace std;
extern int var = 0;
int main(void)
{
var = 10;
return 0;
}

我用了

g++ -std=c++11 test.cpp -o test

g++ test.cpp -o test

以编译代码。我收到了以下警告

test.cpp:44:12: warning: 'extern' variable has an initializer [-Wextern-initializer]
extern int var = 0;
^
1 warning generated.

这是什么意思?我需要担心这个吗?我怎样才能避免它?多谢~

外部的一种解释:

extern 关键字告诉编译器变量是在另一个源模块(当前范围之外(中声明的。然后,链接器找到此实际声明,并将 extern 变量设置为指向正确的位置。extern 语句描述的变量不会为它们分配任何空间,因为它们应该在其他地方正确定义。如果变量被声明为 extern,并且链接器找不到它的实际声明,它将引发"未解析的外部符号"错误。

由于它是在其他地方声明的,所以其他地方是初始化它的地方。

更简单地说,如果你在单文件程序中声明它,这就足够了;删除外部短语。

相关内容

最新更新