如果把一个变量定义为volatile,相当于告诉编译器该变量可能随时被改变,例如被操作系统或硬件改变。
因为带有volatile的变量可以在任何时刻改变,该变量的物理地址可能被频繁的访问,这就意味着编译器
不能对这些变量实行优化
相反,一个变量未被定义成volatile,则编译器认为该变量不能在应用程序之外改变,因此编译器可以对
这种变量实行优化
volatile一般应用在如下场合
1.访问内存映射的外围设备
2.在不同进程之间共用的全局变量
3.中断服务程序中访问的全局变量