【发布时间】:2021-01-25 18:49:56
【问题描述】:
Arduino 的 LiquidCrystal 库定义
virtual size_t write(uint8_t);
在他们的example 中,您会发现对该函数的一些调用:
lcd.write(byte(0)); // when calling lcd.write() '0' must be cast as a byte
lcd.write((byte)1);
lcd.write(4);
我的 C++ 有点生疏了,所以我不确定他们为什么说它必须转换为字节?
我的意思是你不会做类似byte a = byte(0); 的事情,对吧?
根据我在 C++ 参考中的记忆和发现,这种类型转换应该隐式发生,因此无需在函数调用中显式转换。
这个文档/示例是否像我认为的那样不一致和糟糕?还是我在这里遗漏了什么?
【问题讨论】:
-
write函数可能有重载?在这种情况下,您需要演员来选择正确的电话。我还注意到你链接的代码使用了像lcd.write(3);(没有演员)这样的调用。 -
尽可能避免隐式强制转换,让您的代码更具可读性且不易出错