【发布时间】:2021-07-02 01:23:29
【问题描述】:
我在不同的地方使用了一个字符串,所以我把它变成了一个可以重用的变量——就像这样:
String strBoardName = "XY32";
不幸的是,在以下行中,它不起作用:
ArduinoOTA.setHostname(strBoardName); // give a name to our module
并给我错误:
注意:没有已知的参数 1 从 'String' 到 'const char*' 的转换 调用 'ArduinoOTAClass::setHostname(String&)' 没有匹配函数
所以,我不得不在这一行声明另一个要使用的变量,因此:
char* BoardName = "XY32";
并像这样使用它:
ArduinoOTA.setHostname(BoardName); // give a name to our module
这很有效,但我真的很想只使用一个变量。
有可用的解决方法(On the Arduino forum 和 On SO ),但并不能真正解决我的问题。
另外,虽然这在早期工作,但我从 Arduino 1.6.5 升级到 Arduino 1.8.13 并且有一个额外的问题。我收到这条消息:
警告:不推荐将字符串常量转换为 'char*' [-Wwrite-strings] char* BoardName = "XY32";
指向线:
char* BoardName = "XY32";
什么是使用这个变量的正确方法,所以它是正确的(即没有警告或错误消息)并且我可以使用单个变量而不是其中的两个?
【问题讨论】: