首页 > 编程语言 > 详细

关键字volatile在c语言下的理解

时间:2015-10-19 01:53:49      阅读:301      评论:0      收藏:0      [点我收藏+]

volatile关键字:防止被编译器优化;下面是在linux环境下的解释:

*注释:解释下linux下的优化:

linux下,gcc 是指gcc c编译器。编译选项-O1告诉编译器使用第一级优化。增加优化会使程序执行的更快,但是也会有一定的缺点,它会造成机器代码很大程度的变化,从而使机器码和原代码很难对应起来。从程序方面考虑我们会经常使用第二级优化-O2。这个问题以后介绍。

下来我们看下面代码没有加关键字volatile

技术分享

通过下面不加优化命令得到结果;

技术分享

可以看到结果被改变。

通过下面加优化的命令得到结果:

技术分享

可以看见没有改变。

因为经过优化后的变量会放在寄存器中。前面已经说过寄存器是速度最快的。

下面是加volatile的代码:

技术分享

技术分享

可以看到,虽然经过-O2优化,但是加volatile后10还是被改成20;

结论:

volatile关键字是防止编译器对其变量进行优化。



关键字volatile在c语言下的理解

原文:http://zhaoxiaohu.blog.51cto.com/10778115/1704079

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!