你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【3.30签到】每日问答——关键字volatile有什么含意?    关闭

[复制链接]
苏柚 提问时间:2016-3-30 08:47 /
阅读主题, 点击返回1楼
收藏 评论96 发布时间:2016-3-30 08:47
96个回答
chenbourne 回答时间:2016-3-30 09:29:38
签到签到
stary666 回答时间:2016-3-30 09:33:41

一般说来,volatile用在如下的几个地方:

1、中断服务程序中修改的供其它程序检测的变量需要加volatile;

2、多任务环境下各任务间共享的标志应该加volatile;

3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;

另外,以上这几种情况经常还要同时考虑数据的完整性(相互关联的几个标志读了一半被打断了重写),在1中可以通过关中断来实
现,2中可以禁止任务调度,3中则只能依靠硬件的良好设计了。
st签到.png
falcon07@sina.c 回答时间:2016-3-30 09:33:57
签到      
nobita 回答时间:2016-3-30 09:38:21
答:1)表示常量不可以修改的变量。
      2)可以修饰参数,作为输入参数.
      3)修饰函数,防止以外的改动.
      4)修饰类的成员函数,不改变类中的数据成员
VRichard 回答时间:2016-3-30 09:38:35
硬件底层寄存器声明,中断,多任务等。。。
天师猫神 回答时间:2016-3-30 09:48:38
签到签到
yongjun 回答时间:2016-3-30 09:50:09
签到     
烟花绽放 回答时间:2016-3-30 09:50:55
签到签到
xuguomin 回答时间:2016-3-30 09:53:01
签到签到
shaoziyang 回答时间:2016-3-30 09:54:35
签到。            
slotg 回答时间:2016-3-30 09:59:53
3/30 签到 签到
Paderboy 回答时间:2016-3-30 10:07:21
老道-2020408 回答时间:2016-3-30 10:13:52
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。
anny 回答时间:2016-3-30 10:16:11
签到 签到
小王啊 回答时间:2016-3-30 10:26:31
看来要学习的东西还有很多

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版