ユースケースは次のとおりです。
.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 環境です。