volatile作用是什么?在哪些情况下使用?(面试高频问题)
2026/8/1 21:54:44 网站建设 项目流程

volatile 一般用在定义变量前,如:

volatile int count;

作用是每次访问该变量时,强制访问该变量的真实内存。

使用场景:

1.用volatile对抗编译器优化。

2.中断服务程序(ISR)中,修改的变量需要声明为volatile,确保主程序每次读取最新的状态。

3.内存映射寄存器中,硬件寄存器的值可能随时变化。

4.const volatile联合使用,可声明“程序内部不可修改,但外部可能变化”的变量,适用于只读硬件寄存器

注意:volatile不等于线程安全,也不等于原子操作!

volatile只能保证变量访问不被编译器优化;volatile不能保证多个执行流同时访问变量时一定安全。

如果中断和主循环都要修改同一个变量,并且操作不是简单赋值,而是读改写操作,就需要考虑临界区、关中断、原子操作,或者在RTOS中使用互斥锁、队列等同步机制。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询