volatile 关键字的作用

Tags
C语言
ID
33
 
volatile 关键字的作用是告诉编译器不要对标记为 volatile 的变量进行优化,确保每次访问该变量都从内存中读取或写入。
volatile 关键字一般用在以下情况:
  1. 并发访问变量:当多个线程或中断服务例程都可能访问同一个变量时,为了确保每次访问都获取最新值或更新值,可以使用 volatile 修饰该变量。
  1. 硬件寄存器:当访问硬件寄存器或内存映射 I/O 时,由于这些操作可能被外部设备或硬件修改,因此需要使用 volatile 来确保读写操作的正确性。
  1. 防止编译器优化:某些情况下,编译器可能会进行优化,认为某些变量在某段代码中不会发生变化,从而省略对该变量的读取操作。但是,如果这个变量实际上被其他非本地代码修改了,这可能导致程序错误。使用 volatile 可以防止这种优化,确保每次访问都从内存中读取变量的值。
volatile 可以和 const 一起使用吗?可以, const 指定了当前程序不会修改对应内存的值,这不意味着 volatile 没有用了,因为其他外部程序可以修改。