智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1318|回复: 0
打印 上一主题 下一主题

嵌入式编程必须学会的一个关键字volatile

[复制链接]

50

主题

198

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1393
威望
690
贡献
439
兑换币
386
注册时间
2013-3-6
在线时间
132 小时
毕业学校
北京师范大学珠海分校
跳转到指定楼层
1#
发表于 2014-3-10 11:23:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
volatile英文意思是:易变的;
C语言里解释为“直接存取原始内存地址”比较好理解。
不清楚volatile的作用的,可以看下这两个网站的内容:
http://hi.baidu.com/nsgtao/item/a27a059d9c7957d97b7f019c
http://www.cnblogs.com/geneil/archive/2011/12/15/2289073.html
这里我主要是问两个我遇到的跟volatile相关的问题,求老鸟讲解下...
1.volatile的作用只是让程序在读取变量的值时都直接从该变量的内存地址读取,不从之前缓存的地址中读取,避免与实际值不一致。也就是说如果为一个没必要加volatile限定的变量增加volatile关键字的话只会稍稍影响到运行速度吧?可是我现在我为一个变量增加了这个关键字后会导致程序死机,这可能会是什么原因呢?

2.这样一段程序:
  if( a>5)
{
     fun();//调用函数,这个函数里会对a进行操作。
     if( a>1)
     {
          ....
     }
}
这样的程序,如果a不添加volatile的话第二个if的判断会编译器优化成永远成立吗?




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-28 06:07 , Processed in 0.087379 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表