Eclipse/GCC: неопределенная ссылка на переменную Extern
Извините, если это повторный вопрос, но я искал вокруг в течение нескольких часов, и я получаю противоречивые ответы... и что еще хуже, ни один из них не работает.
Это очень просто. У меня есть много исходных файлов, и у меня есть некоторые общие параметры, которые я хочу иметь в одном файле, скажем "параметры.ч". Я хочу установить эти параметры (один раз) во время выполнения, передав их в качестве аргументов программе.
PS: Я знаю, что лучший способ сделать это-пройти все как аргументы для функций, но это большой кусок кода, и мне нужно быстро получить результат, не внося слишком много изменений.
Вот минимальный рабочий пример:
Параметры.h
#ifndef PARAMETERS_H_
#define PARAMETERS_H_
extern int Alpha;
#endif
Главное.cpp
#include <iostream>
#include "Parameters.h"
int main(int argc, char * argv[])
{
const int Alpha = 12.0;
}
Функции.cpp
#include "Parameters.h"
double Foo(const double& x)
{
return Alpha*x;
}
Когда я компилирую с
gcc main.cpp Functions.cpp
Я получаю ошибку " функции.СРР:(.text+0xa): неопределенная ссылка на `Alpha'".
1 ответ:
Вы объявили глобальную переменную с именем
Alpha
, но не определили ее. Ровно в одном исходном файле напишите в области видимости файла:int Alpha;
Или с инициализатором:
Обратите внимание, что локальная переменная с именемint Alpha = 42;
Alpha
, определенная вmain
, отличается от этой глобальной переменной и совершенно не связана с ней.