请问C语言中关键字volatile是什么意思?

superyang1010 2005-05-21 09:51:04
请问C语言中关键字volatile是什么意思?
这句话是什么意思?
*(unsigned valetile int *)ABC = BCD;
ABC和BCD都是寄存器
...全文
4286 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ltc_mouse 2005-05-22
  • 打赏
  • 举报
回复
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:
1) 并行设备的硬件寄存器(如:状态寄存器)
2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
3) 多线程应用中被几个任务共享的变量

http://community.csdn.net/Expert/topic/4019/4019042.xml?temp=.6344721
chengshiq 2005-05-22
  • 打赏
  • 举报
回复
volatile:
告诉编译器改变量除了可被程序改变以外,还可以被其他代理改变。典型地,它被用于硬件地址和其他并行运行的程序共享的数据。

volatile int loc1; /*loc1是一个易变的位置*/
volatile int * ploc ;/*ploc指向一个易变的位置*/
jixingzhong 2005-05-22
  • 打赏
  • 举报
回复
ABC和BCD都是寄存器

同时都是二维的指针

ABC刚定义,BCD原有的(也有可能是2维的数组名)
jixingzhong 2005-05-22
  • 打赏
  • 举报
回复
volatile 的初试定义是这样的 :

用该类型定义的变量意味着没有具体的赋值也会改变,是为了提示系统,防止意外用的.

例如,某一个指针赋值了系统的时钟程序入口,其值即使没有在程序中改变,也会随时变化,而用了volatile定义,系统就会提前注意到这个.

综合呢,有两点作用:防错,优化!
zhousqy 2005-05-21
  • 打赏
  • 举报
回复
实现屏蔽可能的优化
mostideal 2005-05-21
  • 打赏
  • 举报
回复
是易变的。。
qrlvls 2005-05-21
  • 打赏
  • 举报
回复
特别是对于嵌入式系统而言,因为涉及到底层操作
因此有时赋值,系统会对内存区域操作,但不对寄存器进行操作
qrlvls 2005-05-21
  • 打赏
  • 举报
回复
volatile 的一个很大的作用是防止编译器优化
如果不使用volatile的话,某些赋值会被忽略

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧