1 部分編譯器支持函數名默認宏定義。
編譯器提供壹個自帶的宏,名字有__FUNCTION__和__func__兩種,因編譯器不同而不同。
如果支持該類宏情況下,這個宏實際值為壹個字符串,內容為調用宏位置的函數名。
所以,要輸出函數名,可以
#define LOG(fmt, args...) printf("%s:"fmt,__FUNCTION__,##args)
2 如果編譯器本身不支持,那麽就只能在定義宏的時候,準備壹個參數,用來傳遞函數名,並在調用的時候傳遞。
比如
#define LOG(func, fmt, args...) printf("%s:"fmt, #func, ##args)