Archive for the ‘C/C++’ Category
宏的可变参数
12月 15, 2011
留下评论
C语言函数中的可变参数通过va_list和va_arg实现,利用了函数调用过程中,参数采用栈进行传递的方法。 比如
void debug_print(char *format, ...) { va_list args; va_begin(args, format); vaprintf(format, args); va_end(args); }
在宏定义里面同样可以使用可变参数__VA_ARGS__ (C99)
#define DEBUG_PRINT(...) fprintf(stdout, __VA_ARGS__);
或者采用gcc扩展的方法:
#define DEBUG_PRINT(fmt, args...) fprintf(stdout, fmt, ##args)
分类:C/C++