我們在項目中有時為了方便會自定義一些與項目無關的功能,例如打印輸出一些提示信息、將關鍵協議生成文件等,但是如果每次都通過修改代碼的方法來實現,測試部門就會認為你改的這些代碼可能會帶來其他問題。對於這種情況,我一般會通過開關宏來控制,同時編譯多個文件,在測試時使用一個正常發布的版本,如果發現問題並且無法判斷問題的來源時,可以使用這個由打印輸出的版本,找到問題並解決后在切換成為原來的版本。
先上一端測試代碼,非常簡單:
- #include <iostream>
- using namespace std;
- int main(int argc, char* argv[])
- {
- #ifdef _DEBUG
- cout << "using debug..." << endl;
- #endif
- cout << "stop..." << endl;
- }
這段代碼功能是如果事先定義好了_DEBUG宏,則輸出using debug...信息,如果沒有,則只輸出stop...信息,結果如下:
如上圖,同樣的一段代碼,執行的時候完全是兩個結果就是通過編譯時在外部定義宏來實現的。既然編譯單個文件是這樣,我們在寫項目時不也是能使用這種方法嗎?接下來我們繼續延續之前的文檔來寫我們的Makefile
代碼下載地址 請選擇makefile-4
我的Makefile文件是這樣寫的:
接下來看看我的main.cpp文件
好,接下來就開始編譯看結果了
最后,請允許我使用王祖藍的標准動作,兩個手指動作一擺:完美……