【发布时间】:2013-07-25 20:38:43
【问题描述】:
在我得到答案之前:“将您要测试的代码移动到另一个 .cpp 文件”我不能这样做。我尝试使用预处理器 #if TESTING_SUITE ... #endif 但这不起作用,我仍然得到:
`main'的多重定义
我像这样编译我的代码:
g++ -lmxml -lccpunit -o pic pic.cpp wmcc.cp test.cpp
我在 pic.cpp 中有一个 main,另一个在 test.cpp 中。有没有办法解决这个问题?
更新
在我的 test.cpp 中:
#define TESTING_SUITE_1
在我的 pic.cpp 中:
#ifndef TESTING_SUITE_1
int main(...
#endif
不工作
【问题讨论】:
-
您应该能够将现有的
main()替换为#ifdef。当你尝试它时,你可能做错了什么。你是怎么做到的? -
为什么不能将
main移到其他翻译单元? -
@DavidRodríguez-dribeas 因为我有很多其他的源代码使它复杂化,这只是问题的一小部分。我最初应该这样做,但我现在不能。 BoBTFish 我更新了我的 Q
-
代码大小无所谓,只需要提取到不同的翻译单元一个函数即可:
main -
我有很多其他文件、库和链接,我的意思是其他源代码。我不能简单地移动它而不破坏一切。糟糕的设计,但我需要在发布固定版本以移植主版本之前进行修复。
标签: c++ unit-testing testing c-preprocessor