0

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

常量.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,尼基尔

4

2 回答 2

0

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

于 2012-05-15T03:16:20.593 回答
0

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

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

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

于 2012-05-15T03:21:40.897 回答