【问题标题】:Convert a string as a result of another function将字符串转换为另一个函数的结果
【发布时间】: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


【解决方案1】:

如果您的意图是在message 指向的空间中放置一个新的字符串值,那么您不能将message 声明为const,因为const 表示它是一个常量,不能更改。尝试将 const 类型强制转换为非常量会发出警告。你没有给出调用程序的源码,所以我真的不能再评论了。

【讨论】:

    猜你喜欢
    • 2017-07-17
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多