打印
[应用相关]

C语言中volatile是什么意思啊

[复制链接]
46560|144
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huangfeng33|  楼主 | 2012-5-25 21:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C语言中volatile是什么意思啊?
书上写的有点模糊,小弟看的也模糊,有知道的麻烦给说明一下,谢谢了各位了。
来自 2楼
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
5
gxgclg| | 2012-5-25 23:07 | 只看该作者
LS讲解的已经很清楚了

使用特权

评论回复
6
拿起书本| | 2012-5-26 11:10 | 只看该作者
volatile修饰的数据,便一起不能对其进行优化,程序员不能改变他们的值,但是可以通过外部工具对其进行修改。

使用特权

评论回复
7
suse-lj| | 2012-5-26 12:50 | 只看该作者
告诉编译器,此变量易变,不优化。3楼的 解释 就很清楚了

使用特权

评论回复
8
jxmzzr| | 2012-5-28 15:15 | 只看该作者
防止进入寄存器中优化,这个变量在嵌入式编程中用的很多.

使用特权

评论回复
9
香水城| | 2012-5-28 16:07 | 只看该作者
定义为volatile的变量是说这个变量可能会被意想不到地改变,这样编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
volatile变量主要用在以下几个方面:
(1)并行设备的硬件寄存器(如状态寄存器);
(2)一个中断服务子程序中会访问到的非自动变量;
(3)多线程应用中被几个任务共享的变量。
yfy871216 发表于 2012-5-26 17:55


7楼说出了实质,送裤子,:lol

使用特权

评论回复
10
tianli1980| | 2012-5-28 17:01 | 只看该作者
进来学习一下,发现大家都是高手呀!:loveliness:

使用特权

评论回复
11
nongfuxu| | 2012-5-28 17:01 | 只看该作者
优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份

这个应该是volatile变量的实质,学习了。:)

使用特权

评论回复
12
xsgy123| | 2012-5-28 17:06 | 只看该作者
7楼解释的很详细了

使用特权

评论回复
13
zhaofy521| | 2012-5-28 17:10 | 只看该作者
volatile的中文意思----易变的,也就是说每次用到这个变量的时候都要小心,应该从其原始的位置读取,有关该变量的每一步操作都不能省去

使用特权

评论回复
14
sinadz| | 2012-5-28 17:12 | 只看该作者
这个在C语言书里面应该都能找到

使用特权

评论回复
15
yybj| | 2012-5-28 17:23 | 只看该作者
普及基础知识也是一种美德:lol

使用特权

评论回复
16
bingye1086| | 2012-5-28 18:31 | 只看该作者

使用特权

评论回复
17
zyb125| | 2012-5-28 20:07 | 只看该作者
不知道呀

使用特权

评论回复
18
zyb125| | 2012-5-28 20:08 | 只看该作者
不知道呀

使用特权

评论回复
19
linfuchi| | 2012-5-29 09:03 | 只看该作者
这个酷有点简单呐:lol

使用特权

评论回复
20
香水城| | 2012-5-29 11:01 | 只看该作者
这个酷有点简单呐:lol
linfuchi 发表于 2012-5-29 09:03


这么简单就可以得裤子,LS赶快多发点酷帖吧;俺不但给裤子,还会送上香吻 :kiss:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

506

主题

2446

帖子

8

粉丝