我已经成功地将 Serial.prinft() 用于我的调试输出。现在,我在#ifdef DEBUG_MODE ... #endif 预处理器指令之间划了界线。
为了让代码阅读起来更清晰、更简洁,我决定为 Serial.printf() 编写一个简单的包装函数。这个函数看起来像这样:
代码:
全选debugPrintf(const char *format, ...) {
if (DEBUG_MODE) {
va_list args;
va_start(args, format);
Serial.printf(format, args);
va_end(args);
}
}
这个问题是,文本(printf() 的第一个参数)打印得很好,但是之前替换/格式化的所有值/占位符现在都替换为任意数字。
示例:
而不是像这样的东西
代码:
全选Taillights (TL) : 254 (received value: 254)
Sidelights (SL) : 0 (received value: 0)
Reversing Lights (REV): 0 (received value: 0)
Indicator L (IL) : 0 (received value: 0)
Indicator R (IL) : 0 (received value: 0)
我明白了:
代码:
全选Taillights (TL) : 1073741664 (received value: 1073741648)
Sidelights (SL) : 1073741664 (received value: 1073741648)
Reversing Lights (REV): 1073741664 (received value: 1073741648)
Indicator L (IL) : 1073741664 (received value: 1073741648)
Indicator R (IL) : 1073741664 (received value: 1073741648)
我只想将我自己的函数的参数直接传递给 Serial.printf(),但似乎有问题。我在整个 Web 上进行了搜索,但只能找到看起来基本上与我正在做的一样的解决方案。
有任何想法吗?
0