volatile关键字

  • volatile提醒编译器他后面定义的变量随时都有可能改变,程序读写该变量的时候都会直接从变量地址读取。
  • 如果没有volatile关键字,编译器可能优化读写,可能暂时使用寄存器中的值。如果别的程序修改这个变量的话就会出现不一致的现象。
  • 没有volatile也可能能正常运行,但是可能修改编译器的优化级别之后就又不能正常运行了。因此经常会出现debug版本正常,但是release版本却不能正常的问题。所以为了安全起见,只要是等待别的程序修改某个变量的话,就加上volatile关键字。

一般来说,volatile用在以下几个地方:

  1. 中断服务程序中修改的供其它程序检测的变量;
  2. 多任务环境各任务间共享的变量;
  3. 存储器映射的硬件寄存器;

参考文章:详解C中volatile关键字

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。