我想知道##这个宏定义有什么作用:
#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)
为什么要去掉逗号?