[开发工具] STM32CubeIDE能否屏蔽指定的警告

[复制链接]
1019|10
 楼主| Treasure101 发表于 2025-2-28 09:30 | 显示全部楼层 |阅读模式
为了使用M7的SMLAL指令,在程序中定义了一些变量,并在C内使用了汇编,现在每次编译时都会出现警告:
warning: optimization may eliminate reads and/or writes to register variables [-Wvolatile-register-var]
有没有方法能够屏蔽这条警告?在Files->Properties->Warnings页面,那里有各种复选框,没找到只关闭一个特定的警告的设置。

别乱了阵脚 发表于 2025-3-13 01:09 | 显示全部楼层
你遇到的警告是由于编译器对寄存器变量的优化行为导致的。为了屏蔽这条特定的警告,可以尝试使用 #pragma 指令

冰春彩落下 发表于 2025-3-13 02:13 | 显示全部楼层
#pragma 指令可以用来控制编译器的行为,包括屏蔽特定警告。

一秒落纱 发表于 2025-3-13 03:34 | 显示全部楼层
如果寄存器变量未被使用,编译器可能会发出警告。可以通过 __attribute__((unused)) 告诉编译器该变量是故意未使用的,从而避免警告

三生万物 发表于 2025-3-13 04:41 | 显示全部楼层
volatile 关键字可以告诉编译器不要优化对该变量的读写操作。虽然这不会直接屏蔽警告,但可以避免编译器优化导致的警告

夜阑风雨 发表于 2025-3-13 05:28 | 显示全部楼层
如果你使用的是 GCC 或兼容的编译器,可以通过修改编译选项来屏蔽特定警告。例如,在编译命令中添加 -Wno-volatile-register-var如果是在 IDE 中(如 KeilIAR 等),可以在编译器设置中添加该选项。

江河千里 发表于 2025-3-13 06:19 | 显示全部楼层
一般来说,如果寄存器变量确实需要被优化,可以检查代码逻辑,确保变量被正确使用。例如,确保寄存器变量在汇编代码中被正确读写。

光辉梦境 发表于 2025-3-13 07:42 | 显示全部楼层
一般可以定义一下就可以了,就不会报错了

暖了夏天蓝了海 发表于 2025-3-13 08:33 | 显示全部楼层
我觉得警告你可以忽略不计的啊

淡漠安然 发表于 2025-3-13 09:33 | 显示全部楼层
警告不影响,所以你就正常使用应该就可以了吧

远山寻你 发表于 2025-3-13 10:25 | 显示全部楼层
就是你想用汇编指令呗,定义一下呗,是不是就可以了

您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

61

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部