ошибка внешней инициализации с помощью компилятора C ++ - PullRequest
0 голосов
/ 26 июня 2018

Я написал следующий код

#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.

Что это значит?Мне нужно беспокоиться об этом?Как я могу избежать этого?Большое спасибо ~

1 Ответ

0 голосов
/ 26 июня 2018

Одно объяснение внешнего:

Ключевое слово extern сообщает компилятору, что переменная объявлена ​​в другом исходном модуле (вне текущей области).Затем компоновщик находит это фактическое объявление и устанавливает переменную extern, указывающую на правильное местоположение.Переменные, описываемые операторами extern, не будут выделять для них место, так как они должны быть правильно определены в другом месте.Если переменная объявлена ​​как extern, и компоновщик не найдет ее фактического объявления, он выдаст ошибку «Неразрешенный внешний символ».

Поскольку она объявлена ​​в другом месте, то в другом месте это место для ее инициализации.,

Короче, если вы объявляете это в однофайловой программе, этого достаточно;отбросьте внешнюю фразу.

...