打印
[开发工具]

STM32CubeIDE能否屏蔽指定的警告

[复制链接]
503|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)) 告诉编译器该变量是故意未使用的,从而避免警告

使用特权

评论回复
5
三生万物| | 2025-3-13 04:41 | 只看该作者
volatile 关键字可以告诉编译器不要优化对该变量的读写操作。虽然这不会直接屏蔽警告,但可以避免编译器优化导致的警告

使用特权

评论回复
6
夜阑风雨| | 2025-3-13 05:28 | 只看该作者
如果你使用的是 GCC 或兼容的编译器,可以通过修改编译选项来屏蔽特定警告。例如,在编译命令中添加 -Wno-volatile-register-var如果是在 IDE 中(如 KeilIAR 等),可以在编译器设置中添加该选项。

使用特权

评论回复
7
江河千里| | 2025-3-13 06:19 | 只看该作者
一般来说,如果寄存器变量确实需要被优化,可以检查代码逻辑,确保变量被正确使用。例如,确保寄存器变量在汇编代码中被正确读写。

使用特权

评论回复
8
光辉梦境| | 2025-3-13 07:42 | 只看该作者
一般可以定义一下就可以了,就不会报错了

使用特权

评论回复
9
暖了夏天蓝了海| | 2025-3-13 08:33 | 只看该作者
我觉得警告你可以忽略不计的啊

使用特权

评论回复
10
淡漠安然| | 2025-3-13 09:33 | 只看该作者
警告不影响,所以你就正常使用应该就可以了吧

使用特权

评论回复
11
远山寻你| | 2025-3-13 10:25 | 只看该作者
就是你想用汇编指令呗,定义一下呗,是不是就可以了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

15

帖子

0

粉丝