电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
问答
在嵌入式中定义变量时volatile关键字的作用?
已解决
73482
个问题
已帮助
5993
位优秀工程师
在嵌入式中定义变量时volatile关键字的作用?
e80bb0aeef990918
2019-03-29
浏览量:1044
在嵌入式中定义变量时volatile关键字的作用?
显示全部
单片机
关注问题
写回答
0
0
收起
我来回答
上传资料:
选择文件
文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
renshengrumengya
告诉编译器这个变量是可变的,不会被优化掉。每次运行到变量都会去检查这个变量现在的值是什么
发布于
2019-03-29
举报
评论 0
7
0
其他答案
数量:
11
陈长兵
遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址
的稳定访问。
发布于
2019-03-29
举报
评论 0
3
0
@曲终人散@
让每次读取从指定地址读,而不是为了加速从寄存器中读
发布于
2019-03-29
举报
评论 0
3
0
yhj416606438
这个关键字是防止编译器优化的,比如你的keil优化等级很高,执行程序时容易出错,但是加上volatile之后可以防止变量被编译器优化,从而防止重要的变量优化后出错,加上volatile时代码量大一下,但是不易出错
发布于
2019-03-29
举报
评论 0
0
0
nealson
防止编译器优化,保证每次数据更新之后,值会刷新。
发布于
2019-03-29
举报
评论 0
0
0
dreamadmirer
主要作用是通知编译器此变量是可变的,以防止编译时被优化,常常用于修饰在中断服务函数中修改的变量。
发布于
2019-03-29
举报
评论 0
0
0
liangeeg
防止编译优化,每次使用得时候去读取,而不是读取缓存
发布于
2019-03-29
举报
评论 0
0
0
Andrewz
volatile是表明这个变量是易变变量每次用到它的值都必须重新从它的地址读取.
发布于
2019-03-29
举报
评论 0
0
0
厉害企鹅
加上这个变量后,在优化时,是不会把这个变量优化掉的,会一直存在的
发布于
2019-03-30
举报
评论 0
0
0
大少爷安安
为了避免编译器
进行优化吧好像,比如为了实现无操作延时:asm("mov r0 r0");可能会被编译器优化掉,但是如果加上volatile关键字,就不会被优化,而是严格按照编写的代码放入汇编后的文件中
发布于
2019-03-31
举报
评论 0
0
0
chen0000009
这个关键字的意思是不对这个变量进行优化,就是这个变量,每次访问时总是在特定的地址取,而不是在寄存器中取
发布于
2019-04-01
举报
评论 0
0
0
Linux小学童
这个关键字表明变量是可变的,每次使用时都会再去取一次这个数据,防止有变化,同时不会被编译器优化掉
发布于
2019-04-03
举报
评论 0
0
0
相关问题
问题达人
换一批
文章
知识经验换现金
换一批
在嵌入式中定义变量时volatile关键字的作用?
写回答
关注问题
×
我要举报该内容,理由是:
内容质量差:
内容太水、伸手党
垃圾广告信息:
广告、招聘、推广、测试内容等
偏离问答主题:
与技术无关、讨论类
与社区已有内容重复:
违规内容:
色情、暴力、血腥、敏感信息等
不友善内容:
人事攻击、挑衅辱骂、恶意行为
以上选项都不是: