运行时初始化一个const

时间:2012-05-15 03:14:10

标签: c++ const extern

我有一个标题(仅)文件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, NIKHIL

2 个答案:

答案 0 :(得分:0)

确保在编译程序时编译run.cpptester.cpp,并且不会出现链接器错误。

答案 1 :(得分:0)

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

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

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