我一直认为##的作用是连接,但是参考了《可变参数的宏里的‘##’操作说明》:GCC始终支持复杂的宏,它使用一种不同的语法从而可以使你可以给可变参数一个名字,如同其它参数一样。例如下面的例子:#define debug(format, args...) fprintf (stderr, format, args)但是在debug可变参数为0的时候,debug("hello \n"),编译会出错,采用这样的方式:#define debug(format, ...) fprintf (stderr, format, ##args)就可以##的用法,文中是这样解释的:“这里,如果可变参数被忽略或为空,‘##’操作将使预处理器(preprocessor)去除掉它前面的那个逗号。””这句话不明白,是##的新功能,还是原有连接的功能的应用?盼望哪位解释一下,谢谢!