警告:初始化从指针目标类型中丢弃'const'限定符[-Wdiscarded-qualifiers]

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (34)

我试图理解为什么我的编译器警告我这个代码:

static const char *const  _menuMain_Strings_1[] __ATTR_PROGMEM__ = { _menuMain_L1,
        _menuMain_L2, _menuMain_L3, _menuMain_L4 }

static const MENU_DEFINITION _menuDef_Main_1 __ATTR_PROGMEM__ = {
        _menuMain_Strings_1, _menuMain_Fields_1 };
../menudefs.h:53:3: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
   53 |   _menuMain_Strings_1, _menuMain_Fields_1 };
      |   ^~~~~~~~~~~~~~~~~~~

首先,我必须添加额外的* const,以便生成一个hex文件来删除编译器错误。根据我的假设,编译器无论如何都丢弃了一个const。如果没有给出警告,我怎么能满足编译器呢?谢谢。

提问于
用户回答回答于

错误消息指示_menuMain_Strings_1标识指向const数据的指针(它执行此操作),但您正在使用它来初始化指向非const数据的指针。您尚未提供这些类型的所有详细信息,但这与编译器丢弃限定符无关。相反,它是关于您的代码具有const资格不匹配。

这种情况需要警告,因为如果指向的数据实际上是自己声明的const(而不是仅仅在指针中的那个限定),那么尝试修改它会产生未定义的行为。当通过原始的,const合格的指针进行访问时,编译器可以发现并拒绝它,但是当访问是通过初始化的非const限定副本时则_menuDef_Main_1不会。

如果没有给出警告,我怎么能满足编译器呢?

const一致使用或根本不使用。并注意它是病毒式的:你可以const自由地申请资格,但你不能安全地删除它。据推测,您将需要修改的定义,MENU_DEFINITION通过开展const适当的,这可能需要你做出进一步的修改结果。

热门问答

智能钛能处理大数据文件吗?我有30G的数据存储在本地电脑硬盘上?

腾讯智能钛AI开发者

腾讯云 · 智能钛产品团队 (已认证)

腾讯智能钛产品团队官方运营账号。分享产品最新动态,第一时间解答用户疑问。
推荐

硬盘可以升级吗?

最爱开车啦互联网的敏感者
推荐

可以升级,小微活动中没有云硬盘的的,后续可以用同帐号在官网购买和服务器同地域同地区的云硬盘挂载到服务器上使用。

云硬盘挂载初始化方法 可参考 https://cloud.tencent.com/document/product/362/6735

云通信 70402 错误?

推荐已采纳

参数非法,请检查必填字段是否填充,或者字段的填充是否满足协议要求。

您好,可参考此文档:https://cloud.tencent.com/document/product/269/1671

录音识别sdk的录音文件如何保存?

Richel码农
推荐

1.实时语音sdk内置录音器采集音频暂不支持保存语音数据,如需要保存语音数据建议上层自行采集音频数据。

2.实时语音识别sdk不支持暂停&继续操作,停止识别后重新调用start即开始识别。

云通讯im 本地消息存储数据库能否开放使用,要做一个本地聊天记录搜索功能?

推荐
您好,首先核实下您是否咨询app本地存储?App 本地存储;默认情况下,SDK 内部会对收到的消息进行存储,无需用户进行存储。用户可调用接口获取本地消息(无网络操作),另外,通过 getMessage 接口,也会获取本地消息,如果本地消息存在断层,会通过漫游消息补全。消息存储详参...... 展开详请

服务器操作台不是Windows咋换?

蒋小爱

腾讯云 · 技术支持 (已认证)

推荐
您好,您参考重装Windows系统;仅支持中国大陆地域(不含香港)。例如,Linux 重装为 Windows,Windows 重装为 Linux 。 登陆控制台 图片.png 选择【公共镜像】中Windows ,配置Windows密码,点击【开始重装】即可更换Windows 图片...... 展开详请

所属标签

扫码关注云+社区

领取腾讯云代金券