Arduino Serial.print()使用哪种类型的变量?
在arduino上,我需要在函数中使用Serial.print()Arduino Serial.print()使用哪种类型的变量?,arduino,arduino-ide,arduino-c++,Arduino,Arduino Ide,Arduino C++,在arduino上,我需要在函数中使用Serial.print() void loop() { serial_send(any_type); } void serial_send(type message) { Serial.print(message); } Serial.print可以接受任何类型的变量,如int、double或String。如何使用serial\u send获得相同的行为,从而不必指定类型?这就是模板的用途。使用 template <typename
void loop()
{
serial_send(any_type);
}
void serial_send(type message)
{
Serial.print(message);
}
Serial.print
可以接受任何类型的变量,如int
、double
或String
。如何使用serial\u send
获得相同的行为,从而不必指定类型?这就是模板的用途。使用
template <typename T>
void serial_send(T message)
{
Serial.print(message);
}
模板
无效串行发送(T消息)
{
串行打印(消息);
}
您可以调用
send_message
,使用您想要的任何类型,只要print
有一个重载,它就可以工作。如果没有,您将得到一个错误,因为没有匹配调用print
它不是一个序列。print
。函数名print
对于具有不同参数的许多函数是“重载”的。摘自
如果要包装Serial.print函数,可以使用NathanOliver答案中的模板函数。编译器将根据模板为草图中使用的每种参数类型生成一个函数。为什么不搜索“Serial.pring arduino”并点击查看?@TomášZato我认为这里的问题是理解像
Serial.print()这样的函数如何可能
可以接受任何类型的参数-我想OP可能会喜欢编写他/她自己的可以采用任何类型的函数。这是一个好问题。答案可以在源代码中找到,但OP可能不知道在哪里可以找到它。@Caleb抱歉,我误解了这个问题。
size_t print(const __FlashStringHelper *);
size_t print(const String &);
size_t print(const char[]);
size_t print(char);
size_t print(unsigned char, int = DEC);
size_t print(int, int = DEC);
size_t print(unsigned int, int = DEC);
size_t print(long, int = DEC);
size_t print(unsigned long, int = DEC);
size_t print(double, int = 2);
size_t print(const Printable&);