繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM