#define test_debug
#ifdef test_debug
#define dbg_err(fmt,args) printf(fmt,__file__,__function__,__line__,##args)
#endif
void printf_erro(int a,int b)
else
}void main()
測試結果:
c:\all_test\opencv_course\learing_opencv1\learing_opencv1\測試巨集的可變引數.cpp printf_erro 16 6
列印的第乙個引數: __file__ 代表是log是在哪個檔案列印的
列印的第二個引數:__function__ 代表的是log 在哪個函式中列印的
列印的第三個引數:__line__ 代表的是log在哪一行列印的
列印的第四個引數:a 代表的是列印的變數資訊
可變引數及可變引數巨集的使用
我們在c語言程式設計中會遇到一些引數個數可變的函式,例如printf 這個函式,這裡將介紹可變函式的寫法以及原理.一般在除錯列印debug 資訊的時候,需要可變引數的巨集.從c99開始可以使編譯器標準支援可變引數巨集 variadic macros 另外gcc 也支援可變引數巨集,但是兩種在細節上可...
GCC 可變引數的巨集
標準 c只支援可變引數的函式,意味著函式的引數是不固定的,例如printf 函式 的原型為 int printf const char format argument 而在gnu c中,巨集也可以接受可變數目的引數,例如 define pr debug fmt,arg.printk fmt,arg ...
可變引數的巨集定義
link todo 原理 printf 和fprintf 這些輸出函式的引數是可變的,在除錯程式時,你可能希望定義自己的引數可變的輸出函式,那麼可變引數巨集會是乙個選擇。c99中規定巨集可以像函式一樣帶有可變引數,比如 define log format,fprintf stdout,format,...