1可变参数宏
#define DEBUG(args) (printf("DEBUG: "), printf args)
if(n != 0) DEBUG(("n is %d/n", n));
上面的定义,明显的缺陷是调用者必须记住使用一对额外的括弧。
在 GNU C 中,宏可以接受可变数目的参数,就象函数一样,例如:
#define pr_debug(fmt,arg...) /
printk(KERN_DEBUG fmt,##arg)
2
本文探讨了在GNU C编译器中如何使用可变参数宏,并提供了具体的宏定义示例。介绍了如何通过宏实现类似函数的功能来打印调试信息,但需要注意调用时额外括号的使用。
1可变参数宏
#define DEBUG(args) (printf("DEBUG: "), printf args)
if(n != 0) DEBUG(("n is %d/n", n));
上面的定义,明显的缺陷是调用者必须记住使用一对额外的括弧。
在 GNU C 中,宏可以接受可变数目的参数,就象函数一样,例如:
#define pr_debug(fmt,arg...) /
printk(KERN_DEBUG fmt,##arg)
2

被折叠的 条评论
为什么被折叠?