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 可以接受任何类型的变量,例如 intdoubleString。如何使用 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 的答案中的模板函数。编译器将基于模板为草图中使用模板的每个参数类型生成一个函数。