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

在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 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&);