Cis*_*Bae 4 c testing program-entry-point compilation
我正在研究C中的一个小型开源项目,我正在尝试使用带有C的测试框架(框架min_unit).
我有一个foo.h原型文件,并foo.c与实现.
在我的测试文件中tests.c,我有
#include "../test_framework/min_unit.h"
#include "foo.c"
... test cases ...
Run Code Online (Sandbox Code Playgroud)
问题是,因为我有一个main()函数foo.c(我需要编译它),我无法编译,tests.c因为我得到一个错误,指出
note: previous definition of ‘main’ was here
int main() {
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否有一种方法可以使main()函数处于foo.c有条件状态,以便在运行时它不会编译tests.c?只需要一遍又一遍地删除和添加main就太烦人了.
使用条件编译的最简单方法是使用#ifdef语句.例如,foo.c你有:
#ifdef NOT_TESTING //if a macro NOT_TESTING was defined
int main() {
//main function here
}
#endif
Run Code Online (Sandbox Code Playgroud)
在里面test.c,你把:
#ifndef NOT_TESTING //if NOT_TESTING was NOT defined
int main() {
//main function here
}
#endif
Run Code Online (Sandbox Code Playgroud)
如果要编译main函数foo.c,只需将该选项添加-DNOT_TESTING到编译命令即可.如果要编译main函数test.c,请不要添加该选项.
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |