使用#define 和 ## 以及 __VA_ARGS__ 这几个宏定义来实现。
#:将其之后跟随的宏参数变为字符串
##:将其前后的两个宏参数,粘合为一个
/* DEBUG() */
#define DEBUG(format,...) printf("<%s>---"format"\r\n",__FUNCTION__,##__VA_ARGS__)
/* LOG() */
#define LOG(format,...) printf("<%s>---"format"\r\n",__FUNCTION__,##__VA_ARGS__)
printf原型声明:
int printf (const char *__format, ...)
“…”代替。“…”告诉编译器,在函数调用时不检查形参类型是否与实参类型相同,也不检查参数个数。