我有一个标题(仅)文件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
答案 0 :(得分:0)
确保在编译程序时编译run.cpp
和tester.cpp
,并且不会出现链接器错误。
答案 1 :(得分:0)
创建可执行文件时需要链接run.o:
g++ -o tester tester.cpp run.o ; for GNU C++
(如果你没有使用GNU C ++,请检查你自己的编译器的命令行开关)