Serial.print() 使用什么类型的变量?
What type of variable does Serial.print() use?
在 arduino 上,我需要在函数内部使用 Serial.print(),例如;
void loop()
{
serial_send(any_type);
}
void serial_send(type message)
{
Serial.print(message);
}
Serial.print
可以接受任何类型的变量,例如 int
、double
或 String
。如何使用 serial_send
获得相同的行为,这样我就不必指定类型?
这就是模板的用途。使用
template <typename T>
void serial_send(T message)
{
Serial.print(message);
}
您可以使用您想要的任何类型调用 send_message
,只要 print
有重载,它就可以工作。如果不是,你会得到一个错误,因为没有匹配调用 print
.
不是一个Serial.print
。对于许多具有不同参数的函数,函数名称 print
是 'overloaded'。摘自Print.h
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&);
如果你想包装 Serial.print 函数,你可以使用 NathanOliver 的答案中的模板函数。编译器将基于模板为草图中使用模板的每个参数类型生成一个函数。
在 arduino 上,我需要在函数内部使用 Serial.print(),例如;
void loop()
{
serial_send(any_type);
}
void serial_send(type message)
{
Serial.print(message);
}
Serial.print
可以接受任何类型的变量,例如 int
、double
或 String
。如何使用 serial_send
获得相同的行为,这样我就不必指定类型?
这就是模板的用途。使用
template <typename T>
void serial_send(T message)
{
Serial.print(message);
}
您可以使用您想要的任何类型调用 send_message
,只要 print
有重载,它就可以工作。如果不是,你会得到一个错误,因为没有匹配调用 print
.
不是一个Serial.print
。对于许多具有不同参数的函数,函数名称 print
是 'overloaded'。摘自Print.h
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&);
如果你想包装 Serial.print 函数,你可以使用 NathanOliver 的答案中的模板函数。编译器将基于模板为草图中使用模板的每个参数类型生成一个函数。