码迷,mamicode.com
首页 > 编程语言 > 详细

c语言可变参数与宏定义

时间:2019-11-07 11:31:04      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:token   ifd   var   定义   va_arg   details   fine   code   print   

宏定义
https://www.cnblogs.com/wzd5230/p/10959032.html
https://www.cnblogs.com/xyang0917/p/4172493.html
https://blog.csdn.net/wukery/article/details/53286348

//...表示可变参数列表
#define LOG(format, args...) fprintf(stdout, format, args)
LOG("%s","123"); //正确
LOG("123");  //错误   展开后,相当与LOG(,"123")


#define LOG(format, args...) fprintf(stdout, format, ##args)
LOG("%s","123"); //正确
LOG("123");  //正确  ##加上后不会进行连接。
##”连接符号的用法,“##”的作用是对token进行连接,上例中format,args都可以看作是token,如果token为空,“##”则不进行连接,所以允许省略可变参数
因为format这个token为空,又因为有##的加持,所以不连接。
//生产环境与测试环境切换操作
#ifdef DEBUG
#define LOG(format, ...) fprintf(stdout, ">> "format"\n", ##__VA_ARGS__)
#else
#define LOG(format, ...)
#endif

可变参数编程
https://www.cnblogs.com/edver/p/8419807.html
https://www.runoob.com/cprogramming/c-variable-arguments.html
https://blog.csdn.net/ericbar/article/details/79558827

c语言可变参数与宏定义

标签:token   ifd   var   定义   va_arg   details   fine   code   print   

原文地址:https://www.cnblogs.com/retry/p/11810818.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!