博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关键字volatile在c语言下的理解
阅读量:6338 次
发布时间:2019-06-22

本文共 466 字,大约阅读时间需要 1 分钟。

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

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

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

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

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

可以看到结果被改变。

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

可以看见没有改变。

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

下面是加volatile的代码:

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

结论:

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

本文转自 8yi少女的夢 51CTO博客,原文链接:http://blog.51cto.com/zhaoxiaohu/1704079,如需转载请自行联系原作者

你可能感兴趣的文章
Win7 安装cygwin 应该如何选择包
查看>>
小蚂蚁学习C语言(4)——C语言编程预备知识(下)
查看>>
我的友情链接
查看>>
java 谈设计模式之简单工厂
查看>>
vsftpd虚拟用户的配置
查看>>
nginx负载均衡策略
查看>>
2017-11-27Linux基础知识(14)bash特性之脚本编程初步
查看>>
MySQL数据库安装
查看>>
jdk1.5和jdk1.6对于@override支持的区别
查看>>
我的友情链接
查看>>
Android游戏中含有特定支付<skynetpay>内购教程
查看>>
以写代学:python 添加用户设置密码并发邮件给root用户
查看>>
SQL中游标(二)
查看>>
IELTS 雅思核心词汇
查看>>
MediaInfo使用简介(新版本支持HEVC)
查看>>
LNMP搭建
查看>>
oracle中extents
查看>>
Java中如何取数据各个位上的值
查看>>
第一次接触oracle数据库与suse系统心得
查看>>
vmctl脚本操作的更新版
查看>>