小编Moh*_*cro的帖子

##__VA_ARGS__ 是什么意思?

我想知道##这个宏定义有什么作用:

#define debug(M, ...) fprintf(stderr,M "\n",##__VA_ARGS __)
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索了一个答案,我想出了以下内容。

##如果没有给宏提供变量参数,将删除逗号。所以,如果宏是这样调用的

debug("message");
Run Code Online (Sandbox Code Playgroud)

没有引号,它被扩展为

fprintf(stderr,"message");
Run Code Online (Sandbox Code Playgroud)

不是

fprintf(stderr,"message",);
Run Code Online (Sandbox Code Playgroud)

为什么要去掉逗号?

c++ macros preprocessor variadic-macros

10
推荐指数
1
解决办法
9324
查看次数

标签 统计

c++ ×1

macros ×1

preprocessor ×1

variadic-macros ×1