C/C++ __FILE__,__LINE__輸出除錯資訊
阿新 • • 發佈:2019-01-10
在寫程式的時候,總是或多或少會加入一些printf之類的語句用於輸出除錯資訊,但是printf語句有個很不方便的地方就是當我們需要釋出程式的時候要一條一條的把這些語句刪除,而一旦需要再次除錯的時候,這些語句又不得不一條條的加上,這給我們帶來了很大的不便,浪費了我們很多的時間,也造成了除錯的效率低下。所以,很多人會選擇使用巨集定義的方式來輸出除錯語句。
編譯器內建巨集,ANSI C標準中有幾個標準預定義巨集(也是常用的):
__LINE__: 在原始碼中插入當前原始碼行號;
__FILE__: 在原始檔中插入當前原始檔名;
__DATE__: 在原始檔中插入當前的編譯日期
__TIME__ : 在原始檔中插入當前編譯時間;
__STDC__: 當要求程式嚴格遵循ANSI C標準時該標識被賦值為1;
__cplusplus: 當編寫C++程式時該識別符號被定義。
測試原始碼:
測試結果:#include "stdafx.h" #ifdef _DEBUG #define DEBUG(format,...) printf("File: "__FILE__", Line: %05d: "format"\n", __LINE__, ##__VA_ARGS__) #else #define DEBUG(format,...) #endif //!_DEBUG int _tmain(int argc, _TCHAR* argv[]) { DEBUG("file line Test %d", 1); return 0; }