如有需要,请RTFM我,因为到目前为止我可能一直在寻找错误的东西!
在Arduino上
Serial << "sdf" << var;
工作款待(引用streaming.h),但是
#if (CRIPWEB_DEBUG_BITS & DEBUG_CMD)
Serial << F("Run Macro: ") << strMacro << "\n";
#endif
占用三行,使代码不可读。
我想说些类似的话:
Debug(CRIPWEB_DEBUG_BITS & DEBUG_CMD) << F("Run Macro: ") << strMacro << "\n";
这可能吗?我会更高兴:
Debug.set(CRIPWEB_DEBUG_BITS & DEBUG_CMD); Debug << F("Run Macro: ") << strMacro << "\n";
我尝试过后会担心大小!
非常感谢,
格林
最佳答案
预处理器将是编译时的,其他则不是。您真的要放慢脚步吗?
无论如何,如果您接受稍微不同的语法,那么我们将非常接近您想要的内容,同时又不放弃在编译时消除无用的代码:
#define COND(cond, ...) ((void)((exp) && (__VA_ARGS__, 0)))
用于
COND(CRIPWEB_DEBUG_BITS & DEBUG_CMD, Serial << F("Run Macro: ") << strMacro << "\n");
或者,如果您只测试过一种情况:
#define IFDEBUG(...) ((void)((CRIPWEB_DEBUG_BITS & DEBUG_CMD) && (__VA_ARGS__, 0)))
用于
IFDEBUG(Serial << F("Run Macro: ") << strMacro << "\n");