永发信息网

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

答案:3  悬赏:10  手机版
解决时间 2021-02-09 06:26
  • 提问者网友:愿为果
  • 2021-02-08 06:42
C语言中关键字volatile是什么意思
最佳答案
  • 五星知识达人网友:拜訪者
  • 2021-02-08 07:17
volatile的本意是一般有两种说法。1.“暂态的 2.“易变的。这两种说法都有可行。一个定义为volatile的变量是说这变量可能会被意想不到的改变,这样,编译器就不会去假设这个变量的值了。优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。 www.okeycar.com
全部回答
  • 1楼网友:十年萤火照君眠
  • 2021-02-08 09:14
简单的理解就是这个变量可能会被外部函数改变,为了让这个改变能有效执行,不被编译器优化掉。 举个例子吧,一个函数用了一个外部的变量,但这个变量在此函数中没有改变,只是引用,这时候编译器会去做优化,把它的值暂放在内部寄存器中,用的时候读取的是寄存器的值,而不是去访问它的地址取值,这样的话,当这个变量在外部发生了变化的时候,比如中断,或者另外的进程等等。但在这个函数里面就不能起作用,因为被优化后使用的是寄存器的值,还是原来的值,导致错误发生。这种情况下,就要加上这个定义,就不会被优化了。
  • 2楼网友:胯下狙击手
  • 2021-02-08 07:45
用volatile关键字定义变量,相当于告诉编译器,这个变量的值会随时发生变化,每次使用时都需要去内存里重新读取它的值,并不要随意针对它作优化。 不使用volatile定义的变量,可能因为编译器优化而出现一些问题,具体可以看给出的参考资料,里面有一个例子。 建议使用volatile变量的场所: (1) 并行设备的硬件寄存器 (2) 一个中断服务子程序中会访问到的非自动变量(全局变量) (3) 多线程应用中被几个任务共享的变量
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯