用于打印的宏功能

时间:2010-04-13 10:00:01

标签: c function printing macros

如果我有:

#define PRINT(x) fprintf(stderr, x);

并在代码中追加它:

 PRINT(("print this")) 

输出是:  [打印本]

如果我追加它:

 PRINT(("print %s", "this"))

输出是:  [本]

有人可以解释为什么它只接收“this”参数而不是整个字符串吗?

1 个答案:

答案 0 :(得分:6)

PRINT(("print %s", "this"))

变为:

fprintf(stderr, ("print %s", "this"));

相当于:

fprintf(stderr, "this");

Howevervariadic macros(来自C99)工作:

#define PRINT(...) fprintf(stderr, __VA_ARGS__)

int main() {
  PRINT("print %s", "this");
  return 0;
}