一.__VA_ARGS__简介
__VA_ARGS__是一个可变参数宏,其实用需要配合define,作用将左边…里的内容照样抄写在右边__VA_ARGS__所在的位置
例:
#define myprintf(...) printf( __VA_ARGS__)
这样定义后 myprintf 和 printf 函数的作用其实是一样的。
二.使用
有了这个宏之后我们就可以定义一些输出函数,用来规范的输出一些日志。
#ifdef USER_MAIN_DEBUG
#define user_main_printf(format, ...) printf( format "\r\n", ##__VA_ARGS__)
#define user_main_info(format, ...) printf("[\tmain]info:" format "\r\n", ##
__VA_ARGS__)
#define user_main_debug(format, ...) printf("[\tmain]debug:" format "\r\n", ##
__VA_ARGS__)
#define user_main_error(format, ...) printf("[\tmain]error:" format "\r\n",##
__VA_ARGS__)
#else
#define user_main_printf(format, ...)
#define user_main_info(format, ...)
#define user_main_debug(format, ...)
#define user_main_error(format, ...)
#endif
使用效果
user_main_info("stm32");
而当我们不再需要日志输入的时候,只需要吧宏定义改一下即可。