c - 打印宏功能

标签 c function printing macros

例如,如果我有:

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

在代码中我附加了它:

 PRINT(("print this")) 

输出是: [打印这个]

如果我附加它:

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

输出是: [这个]

有人能解释一下为什么它只收到“this”参数而不是整个字符串吗?

最佳答案

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;
}

关于c - 打印宏功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2628595/

相关文章:

c# - 从 Windows 服务打印 PDF

c# - 我可以在 .NET 3.5 的代码隐藏中打印标准测试页吗?

c - 基本生成文件/链接/库问题 : No such file or directory

r - 无法在 dplyr 中使用多字变量,还是我遗漏了什么?

java - 使用 Java 打印到非默认打印机的标签打印机

function - 在 Julia 中定义多项式函数

javascript - 访问对象内部键的值

c - 使用 WIN32 API 中的 sendmessage() 函数通过编辑框获取整数输入 (C)

c++ - GCC '-g' 选项有什么作用?

C - 如何将文件的第二列存储在数组中?