[应用相关] C语言中volatile是什么意思啊

[复制链接]
 楼主| huangfeng33 发表于 2012-5-25 21:32 | 显示全部楼层 |阅读模式
C语言中volatile是什么意思啊?
书上写的有点模糊,小弟看的也模糊,有知道的麻烦给说明一下,谢谢了各位了。
yfy871216 发表于 2012-5-26 17:55 | 显示全部楼层
定义为volatile的变量是说这个变量可能会被意想不到地改变,这样编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
volatile变量主要用在以下几个方面:
(1)并行设备的硬件寄存器(如状态寄存器);
(2)一个中断服务子程序中会访问到的非自动变量;
(3)多线程应用中被几个任务共享的变量。

评分

参与人数 3威望 +3 收起 理由
nongfuxu + 1
icecut + 1
mindshare + 1

查看全部评分

王紫豪 发表于 2012-5-25 21:50 | 显示全部楼层
如果理解不上去, 可以认为不让编译器优化
wgggjfg 发表于 2012-5-25 22:16 | 显示全部楼层
以前也有人问过我,
如:
u8 a,b;
{
   a=2;
   b=a;
}
这时编器会把它改成:
u8 a,b;
{
   a=2;
   b=2;
}
当运行到中间位置,中断把a改了,结果就是错的。

volatile就为了解决这个问题出现的,它会让编译器更老实!

评分

参与人数 3威望 +8 收起 理由
谈的元 + 6
logokfu + 1
mage心寒 + 1

查看全部评分

gxgclg 发表于 2012-5-25 23:07 | 显示全部楼层
LS讲解的已经很清楚了
拿起书本 发表于 2012-5-26 11:10 | 显示全部楼层
volatile修饰的数据,便一起不能对其进行优化,程序员不能改变他们的值,但是可以通过外部工具对其进行修改。
suse-lj 发表于 2012-5-26 12:50 | 显示全部楼层
告诉编译器,此变量易变,不优化。3楼的 解释 就很清楚了
jxmzzr 发表于 2012-5-28 15:15 | 显示全部楼层
防止进入寄存器中优化,这个变量在嵌入式编程中用的很多.
香水城 发表于 2012-5-28 16:07 | 显示全部楼层
定义为volatile的变量是说这个变量可能会被意想不到地改变,这样编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
volatile变量主要用在以下几个方面:
(1)并行设备的硬件寄存器(如状态寄存器);
(2)一个中断服务子程序中会访问到的非自动变量;
(3)多线程应用中被几个任务共享的变量。
yfy871216 发表于 2012-5-26 17:55


7楼说出了实质,送裤子,:lol
tianli1980 发表于 2012-5-28 17:01 | 显示全部楼层
进来学习一下,发现大家都是高手呀!:loveliness:
nongfuxu 发表于 2012-5-28 17:01 | 显示全部楼层
优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份

这个应该是volatile变量的实质,学习了。:)
xsgy123 发表于 2012-5-28 17:06 | 显示全部楼层
7楼解释的很详细了
zhaofy521 发表于 2012-5-28 17:10 | 显示全部楼层
volatile的中文意思----易变的,也就是说每次用到这个变量的时候都要小心,应该从其原始的位置读取,有关该变量的每一步操作都不能省去
sinadz 发表于 2012-5-28 17:12 | 显示全部楼层
这个在C语言书里面应该都能找到
yybj 发表于 2012-5-28 17:23 | 显示全部楼层
普及基础知识也是一种美德:lol
bingye1086 发表于 2012-5-28 18:31 | 显示全部楼层
zyb125 发表于 2012-5-28 20:07 | 显示全部楼层
不知道呀
zyb125 发表于 2012-5-28 20:08 | 显示全部楼层
不知道呀
linfuchi 发表于 2012-5-29 09:03 | 显示全部楼层
这个酷有点简单呐:lol
香水城 发表于 2012-5-29 11:01 | 显示全部楼层
这个酷有点简单呐:lol
linfuchi 发表于 2012-5-29 09:03


这么简单就可以得裤子,LS赶快多发点酷帖吧;俺不但给裤子,还会送上香吻 :kiss:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

506

主题

2446

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部