分享

限定修饰符volatile

 求知665 2014-10-19

在c++Primer中,对volatile做了详细的解释。

当一个对象的值可能会在编译器的控制或监测之外被改变时 ? 那么该对象应该声明成 volatile ?,也就是说程序有可能被编译器优化掉了,一些程序没有执行,或者改变了程序本来的意思。

volatile有个经典的例子:

----------------------------------------------------------------------------------------

for (int i=0; i<100000; i++);

这个语句用来测试空循环的速度的

但是编译器肯定要把它优化掉,根本就不执行

如果你写成

for (volatile int i=0; i<100000; i++);

它就会执行了

使用地方

----------------------------------------------------------------------------------------

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

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

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



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多