這裏是用例:在編譯時從目標文件中替換符號。例如交換主
我有一個.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\("
- 編譯爲u西伯利亞烏拉爾鋁業公司。
我所針對的環境是一個使用g ++的linux環境。
我可能會推薦搜索/學習有關C++自動化單元測試?這是一個公平的問題,但聽起來你要重大改革。 – djechlin
感謝您正確設置您的問題的格式。我誠實地感謝它。 –
爲什麼不保留斷言並使用NDEBUG宏在編譯時刪除它們? –