打印
[软件资料]

什么是‍‍volatile?

[复制链接]
205|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
probedog|  楼主 | 2025-2-22 21:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
volatile是一个类型修饰符(type specifier)。
volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。
volatile变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。

使用特权

评论回复
沙发
LOVEEVER| | 2025-2-23 22:00 | 只看该作者
volatile是一个类型修饰符

使用特权

评论回复
板凳
小小蚂蚁举千斤| | 2025-2-23 22:09 | 只看该作者
volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。

使用特权

评论回复
地板
清芯芯清| | 2025-3-10 17:29 | 只看该作者
volatile 是 C/C++ 中的一个关键字,用于告诉编译器,某个变量的值可能会被程序之外的因素(如硬件、其他线程、中断等)意外修改,因此编译器不应对其进行优化。

使用特权

评论回复
5
nuan11nuan| | 2025-3-10 18:36 | 只看该作者
其实volatile 的作用是确保每次访问该变量时,都直接从内存中读取或写入,而不是使用缓存或寄存器中的旧值

使用特权

评论回复
6
pe66ak| | 2025-3-10 19:49 | 只看该作者
编译器在优化代码时,可能会假设某些变量的值不会被外部因素改变,从而进行一些优化(如将变量值缓存到寄存器中)。

使用特权

评论回复
7
ewyu| | 2025-3-10 20:53 | 只看该作者
其实使用 volatile 可以禁止编译器优化,确保每次访问变量时都从内存中读取或写入

使用特权

评论回复
8
hhdhy| | 2025-3-10 22:04 | 只看该作者
在多线程或硬件交互的场景中,volatile 可以确保变量的修改对其他线程或硬件是可见的。

使用特权

评论回复
9
gra22ce| | 2025-3-10 23:13 | 只看该作者
硬件寄存器的值可能由硬件设备随时改变,使用 volatile 可以确保每次访问都从寄存器读取最新值。

使用特权

评论回复
10
yuliangren| | 2025-3-11 09:00 | 只看该作者
在多线程环境中,共享变量可能被其他线程修改,使用 volatile 可以防止编译器优化导致读取旧值。

使用特权

评论回复
11
tiakon| | 2025-3-11 10:22 | 只看该作者
在信号处理函数中修改的变量应声明为 volatile,以确保主程序能看到最新的值。

使用特权

评论回复
12
canfeil| | 2025-3-11 13:34 | 只看该作者
其实在嵌入式系统中,volatile 常用于确保对特殊内存地址的访问不会被优化

使用特权

评论回复
13
nqty| | 2025-3-11 14:18 | 只看该作者
volatile 并不保证原子性。如果需要原子操作,仍需使用锁或其他同步机制。

使用特权

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

本版积分规则

422

主题

2602

帖子

3

粉丝