如果我有:
#define PRINT(x) fprintf(stderr, x);
并在代码中追加它:
PRINT(("print this"))
输出是: [打印本]
如果我追加它:
PRINT(("print %s", "this"))
输出是: [本]
有人可以解释为什么它只接收“this”参数而不是整个字符串吗?
答案 0 :(得分:6)
PRINT(("print %s", "this"))
变为:
fprintf(stderr, ("print %s", "this"));
相当于:
fprintf(stderr, "this");
However,variadic macros(来自C99)工作:
#define PRINT(...) fprintf(stderr, __VA_ARGS__)
int main() {
PRINT("print %s", "this");
return 0;
}