有一个函数采用以下参数:
int send_message(const char *topic)
我有一个结构体:
typedef struct mqtt_topic {
char topic[200];
} mqtt_topic_t;
和类型为的值:mqtt_topic_t *mqtt_topic
我试图将mqtt_topic->topic
作为参数传递给函数,但是它抛出了一个错误。我如何将这些数据转换为有用的格式,然后在我的函数中作为参数使用?
下面是代码片段:
int mqtt_publish(char message[])
{
int msg_id = 0;
ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED");
mqtt_topic_t *mqtt_topic = get_mqtt_topic();
msg_id = esp_mqtt_client_publish(client,&mqtt_topic->topic, message, 0, 1, 0);
ESP_LOGI(TAG, "sent publish successful, msg_id=%d", msg_id);
return msg_id;
}
函数原型:
int esp_mqtt_client_publish(esp_mqtt_client_handle_t client, const char *topic, const char *data, int len, int qos, int retain);
2条答案
按热度按时间sy5wg1nm1#
参数
&mqtt_topic->topic
的类型为“指向char[200]
的指针“。您需要的只是指向char
的指针:当作为参数传递时,或以除
&
和sizeof
运算符之外几乎任何其他方式使用时,数组衰减为指向其第一个元素指针这就是mqtt_topic->topic
给出char*
原因,char*
作为此处所需const char*
参数是可以yc0p9oo02#
您不需要在
mqtt_topic->topic
前面加上&
。如果您的代码没有编译(它给出错误-而不是警告),则意味着您使用了**
C++
编译器而不是C
**编译器,或者您设置了将警告视为错误。