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 7

1 ответ:

Вы объявили глобальную переменную с именем Alpha, но не определили ее. Ровно в одном исходном файле напишите в области видимости файла:

int Alpha;

Или с инициализатором:

int Alpha = 42;
Обратите внимание, что локальная переменная с именем Alpha, определенная в main, отличается от этой глобальной переменной и совершенно не связана с ней.