【发布时间】:2019-03-24 07:08:12
【问题描述】:
我想知道##在这个宏定义中做了什么:
#define debug(M, ...) fprintf(stderr,M "\n",##__VA_ARGS __)
我用谷歌搜索了一个答案,我想出了以下内容。
如果没有给宏提供变量参数,## 将删除逗号。所以,如果像这样调用宏
debug("message");
没有引号,它被扩展为
fprintf(stderr,"message");
不是
fprintf(stderr,"message",);
为什么要去掉逗号?
【问题讨论】:
标签: c++ macros preprocessor variadic-macros