【发布时间】:2021-05-08 08:31:48
【问题描述】:
我正在开发一个简单的代码来实现客户端和 MOSQUITTO BROKER 之间的 MQTT 通信。我对发布功能有疑问,但可以将其视为 C 编程的一般问题。 函数“mqttPublish”需要一个 const uint8_t payloadPtr*,即要发送的消息。 我组织了代码以发送一个字符串,它运行良好:
- 我声明了 const uint8_t myPayload[] = "payload";
- 然后我在 main 的函数 mqtt_Publish 中调用了 myPayload。
此时我希望消息是另一个函数的结果,但是我对如何实现它有疑问,因为我似乎必须进行很多转换。我实现了一个以这种方式给出消息的函数: enter image description here 可能是正确的方法吗?问题是我在 const uint8_t payloadPtr* 中找不到任何方法来调用此函数。我错了什么?有没有最简单的方法?问题是发布函数只需要一个 uint8_t 值。 我们将不胜感激任何帮助。 问候
【问题讨论】:
-
const关键字是一个(编译器)信息性关键字,承诺指针指向的数据不会被更改(C 允许破坏此承诺)。您可以根据需要安全地传递非const指针或类型转换。 -
mqttPublish有一个const uint8_t *参数这一事实并不意味着您必须向它传递一个const uint8_t *参数。您可以将uint8_t *参数传递给它,它会自动转换为const uint8_t *。定义不带const的数组并将函数printto_MQTT定义为具有非常量参数。
标签: c