在c/c++編譯器中,會有編譯器級別的預定義巨集,__file__,__line__,__function__,__date__,__time__等。
下面來一一介紹這幾個巨集的含義:
__file__ 當前檔案的檔名,linux下gcc只有檔名,而在windows下gcc會包含完整的路徑,可通過編譯選項設定為只有檔名;
__line__**當前行號;
__function__ 當前行所在的函式名稱;
__date__ 當前日期;
__time__當前時間。
下面介紹這幾個巨集的用法。
#include #include using namespace std;
int main()
在linux下編譯後執行結果如下:
date:apr 27 2017 time:13:59:55
file:test.cpp, line:11, function:main
在我們除錯程式時,這幾個巨集對我們的除錯很方便。比如我們可以在函式的異常出口處使用這些巨集列印資訊的方式定位到程式異常的具體檔案,函式,**行。例如:
#define debug
#ifdef debug
#define debug_err_log() cout << "err file:" << __file__ << ", line:" << __line__ << ", function:" << __function__ << endl;
#else
#define debug_err_log()
#endif
這樣,我們就可以在想輸出異常的地方直接是使用debug_rrr_log()來列印這樣的資訊了。
當然也可以使用這些巨集做別的組合列印除錯資訊。
C C 預定義巨集
下面描述的巨集定義,不需引用其他標頭檔案,直接可用於 中。特定的作用給我們提供了不少的便利。分別描述如下 1 file line function 或者 func file 當前程式行所在原始檔名稱,標準c支援,該巨集當做字串對待 line 當前程式行所在原始檔內的行號,標準c支援,該巨集當做整形對...
C C 常用預定巨集
cplusplus 如果源 是cpp,則 cplusplus定義為1,如果源 是c,則 cplusplus就是未定義.舉例 cpp檔案中使用到了c檔案實現的函式,為了避免連線錯誤,需要使用extern c 宣告。ifdef cplusplus extern c endif date 11個字元的字串...
蒐集C C 編譯器
蒐集c c 編譯器在所有的和計算機的相關的專業中,c,c 幾乎都是必修課,而我們用的編譯器多半都是 turboc 2.0,visual c borland c builder 然而c c 的編譯器是何其多,長期使用乙個編譯器會讓我們形成思維的定視,就像當我們長期使用了 windows 再轉換成使用 ...