c - 在 C 中调试打印宏?

标签 c macros

在 C 语言中,定义类似 printf 的宏的正确方法是什么,它只在定义 DEBUG 符号时打印?

#ifdef DEBUG
#define DEBUG_PRINT(???) ???
#else
#define DEBUG_PRINT(???) ???
#endif

在哪里???就是不知道该填什么的地方

最佳答案

这个成语我见过很多:

#ifdef DEBUG
# define DEBUG_PRINT(x) printf x
#else
# define DEBUG_PRINT(x) do {} while (0)
#endif

像这样使用它:

DEBUG_PRINT(("var1: %d; var2: %d; str: %s\n", var1, var2, str));

额外的括号是必需的,因为一些较旧的 C 编译器不支持宏中的可变参数。

关于c - 在 C 中调试打印宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1941307/

相关文章:

c - 程序说明

c - Scanf将一个变量分配给C中的两个指针

python - 127.0.0.1 拒绝连接

C 宏使用文字与变量产生不同的结果

c++ - 如何使用 fseek() 进入一行的开头

c++ - Plesk 管理面板 C/C++ API 示例

c++ - rand() 函数的问题

types - 获取宏中的类型信息

c++ - GCC - 将宏用于函数属性时出现 "has initializer but incomplete type"错误

c - 如何复制 C 宏?