一.可变参数宏
C99格式:#define debug(format,...) fprintf(stderr,format,##__VA_ARGS__)
经测试,GCC支持该格式。定义中的##是为了避免当以debug("A message")调用时,宏扩展后多余的一个逗号而导致编译错误。
GCC格式:#define debug(format,args...) fprintf(stderr,format,##args)
显然,该格式在可读性和易用性上都是最佳选择。
C99支持可变参数宏前的格式:#define debug(args) (printf("DEBUG:"),printf args)
明显的缺点是:必须在调用时记得添加额外的一对括号,debug(("n is %d\n",n))
二.可变参数函数
阅读(1338) | 评论(0) | 转发(0) |