[英]error in extern initialization with C++ compiler
我写了下面的代码
#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,并且链接器未找到该变量的实际声明,则它将引发“未解析的外部符号”错误。
由于它是在其他地方声明的,因此在其他地方可以对其进行初始化。
简而言之,如果您在单文件程序中声明它,那就足够了; 删除外部短语。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.