2012-05-15 4 views
0

У меня есть файл header (только) file constants.h, где я определяю все постоянные переменные, которые будут использоваться позже в библиотеке. Однако есть одна переменная, которую я хотел бы определить во время выполнения в файле реализации. Я пытался сделать что-то вроде этого:инициализация времени выполнения a const

constant.hpp

extern const unsigned int numTests; 

где-то еще в run.cpp

const unsigned int numTests = 10; 

, а затем еще один файл tester.cpp использует

if (n < numTests) { 
     // do something 
    } 

Теперь, когда я скомпилирую его, я получаю ошибку компоновщика в tester.o как undefined symbol numTests. Я понимаю, почему это происходит: tester.cpp включает константы.hpp, а не run.cpp, и поэтому он не может найти константу numTests, инициализированную в run.cpp.

Есть ли лучший способ сделать это?

ТИА, Нихилу

ответ

0

Убедитесь, что вы компилируете как run.cpp и tester.cpp при компиляции программы, и вы не получите ошибку компоновщика.

0

Вы должны связать run.o при создании исполняемого файла:

g++ -o tester tester.cpp run.o ; for GNU C++ 

(Проверьте свой собственный компилятор командной строки переключается, если вы не используете GNU C++)