2012-05-15 45 views
0

我有一个头文件(仅)文件constants.h,我定义了所有常量变量,稍后在库中使用。但是,有一个变量,我想在实现文件中定义运行时。我试图做这样的事情:运行时初始化常量

constant.hpp

extern const unsigned int numTests; 

其他地方在run.cpp

const unsigned int numTests = 10; 

和,然后另一个文件tester.cpp使用

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

现在,当我编译它时,我将tester.o中的链接器错误显示为未定义的符号numTests。我有点理解为什么会发生这种情况:tester.cpp包含constants.hpp而不是run.cpp,因此它无法找到在run.cpp中初始化的常量numTests。

有没有更好的方法来做到这一点?

TIA, 尼基尔

回答

0

确保您编译两个run.cpptester.cpp当您编译的程序,你不会得到一个连接错误。

0

您需要在创建可执行文件时链接run.o:

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

(检查你自己的编译器的命令行开关,如果你不使用GNU C++)