我正在尝试使用PubSubClient
库的成员函数,该成员函数使用参数const char*
之一,但是我需要将代码中的bool type
变量传递给该成员函数(作为有效负载)。我该如何实现?
该库的成员函数如下:
boolean PubSubClient::publish(const char* topic, const char* payload) {
return publish(topic,(const uint8_t*)payload,strlen(payload),false);
}
嗯,该函数需要一个常量作为输入。这意味着您不能将变量传递给它。常数值不能更改,并且会进行硬编码。将其与定义进行比较,您绝对不能执行以下操作:
#define CONSTANT 0
CONSTANT = 1
我想知道的是,此函数只能采用在编译时设置的值。但是由于布尔值只能采用两个不同的值,因此这意味着您的有效负载只能具有两个不同的值。我们将布尔类型的变量称为option。您可以这样实现:
const char option_1 = '0';
const char option_2 = '1';
PubSubClient client;
...
if(option == 0)
{
client.publish(&topic, &option_1);
}
else
{
client.publish(&topic, &option_2);
}
...
或更短,像这样:
...
client.publish(&topic, option ? &option_2 : &option_1);
...
希望有所帮助。