我一直认为##的作用是连接,但是参考了《可变参数的宏里的‘##’操作说明》:GCC始终支持复杂的宏,它使用一种不同的语法从而可以使你可以给可变参数一个名字,如同其它参数一样。例如下面的例子:#define debug(format, args...) fprintf (stderr, format, args)但是在debug可变参数为0的时候,debug("hello \n"),编译会出错,采用这样的方式:#define debug(format, ...) fprintf (stderr, format, ##args)就可以##的用法,文中是这样解释的:“这里,如果可变参数被忽略或为空,‘##’操作将使预处理器(preprocessor)去除掉它前面的那个逗号。””这句话不明白,是##的新功能,还是原有连接的功能的应用?盼望哪位解释一下,谢谢!
解决方案 »
- 请问各位兄弟,有一个程序,一直重复hook一个函数,我如何阻止它?
- MFC编程。数据库入门问题。在线等~~~
- ATL复合控件的问题
- 模拟键盘按键
- 关于AfxMessageBox的问题,求求大家帮帮我,爆菜
- 帮我看看这个代码怎么错误了?
- 反编译到底是什么意思,怎么回事呀。VB VC 代码可以反骗译吗
- 有没有哪个信誉值是超过100的,留个言让我看一下!
- 小问题???
- error C2061: 语法错误: 标识符“IplImage”
- 如何让CEdit(MultiLine)的Scroll Bar可以随意拖动到任意位置,并不随着CEdit中内容的增加而移动?? 在线等。。。
- 圆形按钮问题,高手请帮忙指导!
?