您的位置:首页 > 其它

volatile关键字的含义和作用

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

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

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

2、使用volatile的几种情形

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

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

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

注意:频繁地使用volatile很可能会增加代码尺寸和降低代码性能,因此要合理地使用volatile。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: