这是用例:
我有一个.cpp
文件,其中实现了功能。例如说它具有以下内容:
[main.cpp]
#include <iostream>
int foo(int);
int foo(int a) {
return a * a;
}
int main() {
for (int i = 0; i < 5; i += 1) {
std::cout << foo(i) << std::endl;
}
return 0;
}
我想对这个文件中的函数执行一些自动化测试,foo
但需要替换掉main()
函数来做我的测试。最好我希望有一个像这样的单独文件,我可以在该文件之上链接:
[mymain.cpp]
#include <iostream>
#include <cassert>
extern int foo(int);
int main() {
assert(foo(1) == 1);
assert(foo(2) == 4);
assert(foo(0) == 0);
assert(foo(-2) == 4);
return 0;
}
我希望(如果可能的话)避免更改原始.cpp
文件以执行此操作 - 尽管如果这是不可能的,这将是我的方法:
- 替换
"(\s)main\s*\("
==>"\1__oldmain\("
- 像往常一样编译。
我的目标环境是带有 g++ 的 linux 环境。