【发布时间】:2012-12-22 07:36:49
【问题描述】:
我定义了一个 PRINTF MACRO 如下所示:
#if(PRINTF_VERSION & PRINTF_DISABLE)
#define CYPRINTF
#else
#define CYPRINTF printf
#endif
但是当打印被禁用时,我收到以下警告:
warning: statement with no effect
我尝试了以下解决方案,它适用于 GCC 编译器,但不能适用于不支持可变参数 MACRO 的编译器。
#if(PRINTF_VERSION & PRINTF_DISABLE)
#define CYPRINTF(format, ...)
#else
#define CYPRINTF printf
#endif
如何更改非日志记录宏以不发出警告?
注意事项:
- 我不想添加编译标志
-Wunused-value。 - 我不想使用可变参数 MACRO。
- 当 printf 被禁用时,应删除所有代码以避免影响系统性能。
【问题讨论】:
-
由于 GCC 支持可变参数宏,您可以轻松避免使用 GCC 的警告。哪个其他编译器会产生您担心的警告——也就是说,哪个其他编译器不支持可变参数宏? (我可以猜到,但你应该说明是哪个。)