C++ 在Arduino上重载流

C++ 在Arduino上重载流,c++,arduino,C++,Arduino,请RTFM我,如果需要的话,到目前为止,我可能一直在寻找错误的东西 关于Arduino号 Serial << "sdf" << var; Serial您可以编写自己的类来实现这一点。我只回答表达式的编译时解决方案: Serial << "sdf" << var; 但是需要注意的是,Serial预处理器将是编译时的,而另一个则不是。你真的想要减速吗 无论如何,如果您接受稍微不同的语法,我们将非常接近您想要的,同时不会放弃在编译时消除无用的代码:

请RTFM我,如果需要的话,到目前为止,我可能一直在寻找错误的东西

关于Arduino号

 Serial << "sdf" << var;

Serial您可以编写自己的类来实现这一点。

我只回答表达式的编译时解决方案:

Serial << "sdf" << var;

但是需要注意的是,
Serial预处理器将是编译时的,而另一个则不是。你真的想要减速吗

无论如何,如果您接受稍微不同的语法,我们将非常接近您想要的,同时不会放弃在编译时消除无用的代码:

#define COND(cond, ...) ((void)((exp) && (__VA_ARGS__, 0)))
用作

COND(CRIPWEB_DEBUG_BITS & DEBUG_CMD, Serial <<  F("Run Macro: ") << strMacro << "\n");
IFDEBUG(Serial <<  F("Run Macro: ") << strMacro << "\n");
用作

COND(CRIPWEB_DEBUG_BITS & DEBUG_CMD, Serial <<  F("Run Macro: ") << strMacro << "\n");
IFDEBUG(Serial <<  F("Run Macro: ") << strMacro << "\n");

IFDEBUG(串行)
IFDEBUG(串行)
IFDEBUG(串行)预处理器将是编译时的,另一个不会。你真的想要减速吗?对我来说,大小比速度更重要,但可读性(在这个阶段)胜过一切——我还用了happier这个词,意思是我喜欢的“差不多快乐”(_uva_uargs,0)))
@deduplicator。我讨厌使用我不懂的东西。uu VA ARGS uuuu给我变量ARGS-0做什么?我只是把0放在那里,这样就有一个值可以强制转换为void,即使你提供的最后一个表达式已经是void类型。可以,但这需要读取,并且可能会占用内存-在t上非常有限他是Arduino。谢谢。但它似乎只是调试而已。在发行版下,它将被编译为零。你是对的,但目前我不知道如何编写一个为Serial继承的类。如果我这样做,我不知道我是否是newserial(doit)是的,但是5行而不是3行,我喜欢阅读易读的代码。这就是为什么我接受你和重复数据消除程序的建议,深入研究macro land.Ta!你明白了吗?你会使用
SerialAha,不,我第一次没有完全理解。但是我使用
#define HTTP_REQ_DEBUG B10000000#define macro_DEBUGB01000000#定义RAMUSE(u DEBUG)B00100000#定义IP(u DEBUG)B00010000#定义DEBUG(u CMD)B00001000#定义DEBUG(u TODO)B0000010#定义DEBUG(u TEST我可以从其他方面看到它的许多用途。
#if SomeCondition
typedef int SmallInt;
#else
typedef short SmallInt;
#endif
#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");