这是用例:
我有一个.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 环境。