我有一堆源代码,它使用双括号表示一堆宏调用,其中第二个arg和forward是一个print语句的变量。
DEBUG((1,"here is a debug"))
DEBUG((1,"here is %d and %d",42,43))
等。
我想写一个可以打印args 2 -...的宏,但我无法弄清楚如何删除额外的括号,以便我可以访问args。
即,这显然不起作用:
#define DEBUG(ignore,...) fprintf(stderr,__VA_ARGS__)
以下尝试偷偷摸摸也失败了('DEBUG2未定义'):
#define DEBUG2(ignore,...) fprintf(stderr,__VA_ARGS__)
#define DEBUG(...) DEBUG2
如果不编辑所有宏调用以删除parens,我该如何定义一个可以执行此操作的宏?
答案 0 :(得分:2)
您可以这样做:
#define PRINTF(unused, ...) fprintf(stderr, __VA_ARGS__)
#define DEBUG(arg) PRINTF arg