gpt4 book ai didi

C++ 从 'const char*' 到 'char*' 的无效转换 Arduino Uno

转载 作者:行者123 更新时间:2023-11-28 04:13:02 25 4
gpt4 key购买 nike

我已经浏览了以下链接,但无法正常工作:

Adding to c* invalid conversion from const char* to char*"

Why is conversion from string constant to 'char*' valid in C but invalid in C++

我正在研究 arduino Uno。我需要将类型为 char* 的参数发送给函数。我有以下代码:

const char* topic = "SampleTopic";
const char* msg = "Hello";
publish(0, 0, 0, "msgid", topic, msg);

我收到这个错误:

initializing argument 5 of 'void GSM_MQTT::publish(char, char, char, unsigned int, char*, char*)'

void publish(char DUP, char Qos, char RETAIN, unsigned int MessageID, char *Topic, char *Message);

warning: invalid conversion from 'const char*' to 'char*' [-fpermissive]

publish(0, 0, 0, _generateMessageID(), topic, msg);

                                              ^

我什至尝试过使用 const std::string& topic = "SampleTopic"; 但出现此错误:

'string' in namespace 'std' does not name a type

即使 const char* topic = (char*)"SampleTopic"; 并将其作为 func(topic) 传递也会给出相同的错误。

我该如何解决这个问题??

最佳答案

我对 GSM_MQTT::publish() 函数一无所知,但如果它需要一些可修改的字符串(char * 没有const) 用于TopicMessage,那么您必须提供可修改 字符串。

char topic[] = "SampleTopic";
char msg[] = "Hello";

(您必须确保存储空间足以进行修改)

另一方面,如果这个函数确实确实需要一些可修改的字符串,那么它可能是 API 中的一个错误,这些参数应该声明为 const char *.
如果确实是这种情况,您可以在传递两个 const char 时安全地使用 const_cast(甚至是传统的 C cast) * 参数。

const char* topic = "SampleTopic";
const char* msg = "Hello";
publish(0, 0, 0, ???msgid???, const_cast<char *>(topic), const_cast<char *>(msg));

请注意,在您的示例中,您使用了字符串 "msgid",其中需要 unsigned int

关于C++ 从 'const char*' 到 'char*' 的无效转换 Arduino Uno,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57258653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com