You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino温脉检测项目出现字符串常量转char*编译警告如何解决

Arduino编译警告修复方案:字符串常量转char*问题

警告原因

该警告是因为旧版本Arduino的SoftwareSerial库中find()方法的入参定义为char*类型,但你传入的"Error"是只读的字符串常量,类型为const char*,ISO C++标准不允许隐式将const类型指针转换为非const类型指针,因此抛出该警告。

修复方案

有三种常用的修复方式,任选其一即可:

  • 方案1:强制类型转换(最简便,无需修改其他逻辑)
    直接给字符串常量添加强制转换符,将const char*转为char*,由于find()方法不会修改传入的字符串内容,该操作是安全的。
    修改esp_8266()函数中对应的代码行:
// 修改前
if (ser.find("Error")){
// 修改后
if (ser.find((char*)"Error")){
  • 方案2:用可变char数组存储待查找字符串(更符合C++编码规范)
    先将常量字符串存入可变的char数组,再传入find()方法,无需强制转换:
void esp_8266()
{
  // 其他原有代码不变,在调用find前新增下面一行
  char errorHint[] = "Error";
  if (ser.find(errorHint)){
    Serial.println("AT+CIPSTART error");
    return;
  }
  // 其他原有代码不变
}
  • 方案3:升级依赖版本
    更新Arduino IDE到最新正式版,或单独升级SoftwareSerial库到最新版本,新版库已经将find()方法的入参改为const char*类型,兼容字符串常量传入,无需修改代码即可消除警告。

内容的提问来源于stack exchange,提问作者LemonSpatula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:54:10