主要是利用 __FILE__, __LINE__, __FUNCTION__ 等 compilier build-in 提供的資訊.
此時所有的 debug message 就不用再次(重覆)寫這幾個內容.
#define DBG_PRINTF_EN (0)
#define DBG_PRINTF(fmt, ...) \
do { \
if (DBG_PRINTF_EN) \
printf("%s:%d:%s(): " fmt, __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__); \
} while (0)