volatile关键字的含义和作用

1、volatile提醒编译器它后面所定义的变量随时有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都要小心地。从该变量的地址中读取。如果没有volatile关键字,则编译器就可能优化读取和存储,可能暂时使用寄存器中的值。

     当要求使用volatile声明变量的时候,系统总是重新从它所在的内存读取数据,即使前面的指令刚刚从该处读取过数据。精确地说就是,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再优化,从而可以提供对特殊地址的稳定访问;如果不使用volatile,则编译器对所声明的语句进行优化。

(简洁地说就是,volatile关键字影响编译器编译的结果,用volatile声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错。)

2、使用volatile的几种情形

    <1>中断服务程序中修改的供其他程序检测的变量需要加volatile;

    <2>多任务环境下各任务间共享的标志应该加volatile;

    <3>多存储器映射的硬件寄存器通常也要加volatile,因为每次对它的读写都可能有不同意义。


注意:频繁地使用volatile很可能会增加代码尺寸和降低代码性能,因此要合理地使用volatile。

发布了12 篇原创文章 · 获赞 3 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览