• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

在嵌入式中定义变量时volatile关键字的作用?

e80bb0aeef990918 2019-03-29 浏览量:1044
在嵌入式中定义变量时volatile关键字的作用?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 告诉编译器这个变量是可变的,不会被优化掉。每次运行到变量都会去检查这个变量现在的值是什么
    • 发布于 2019-03-29
    • 举报
    • 评论 0
    • 7
    • 0

其他答案 数量:11
  • 遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址

    的稳定访问。

    • 发布于2019-03-29
    • 举报
    • 评论 0
    • 3
    • 0

  • 让每次读取从指定地址读,而不是为了加速从寄存器中读
    • 发布于2019-03-29
    • 举报
    • 评论 0
    • 3
    • 0

  • 这个关键字是防止编译器优化的,比如你的keil优化等级很高,执行程序时容易出错,但是加上volatile之后可以防止变量被编译器优化,从而防止重要的变量优化后出错,加上volatile时代码量大一下,但是不易出错
    • 发布于2019-03-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 防止编译器优化,保证每次数据更新之后,值会刷新。

    • 发布于2019-03-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 主要作用是通知编译器此变量是可变的,以防止编译时被优化,常常用于修饰在中断服务函数中修改的变量。
    • 发布于2019-03-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 防止编译优化,每次使用得时候去读取,而不是读取缓存
    • 发布于2019-03-29
    • 举报
    • 评论 0
    • 0
    • 0

  • volatile是表明这个变量是易变变量每次用到它的值都必须重新从它的地址读取.
    • 发布于2019-03-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 加上这个变量后,在优化时,是不会把这个变量优化掉的,会一直存在的
    • 发布于2019-03-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 为了避免编译器进行优化吧好像,比如为了实现无操作延时:asm("mov r0 r0");可能会被编译器优化掉,但是如果加上volatile关键字,就不会被优化,而是严格按照编写的代码放入汇编后的文件中
    • 发布于2019-03-31
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个关键字的意思是不对这个变量进行优化,就是这个变量,每次访问时总是在特定的地址取,而不是在寄存器中取
    • 发布于2019-04-01
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个关键字表明变量是可变的,每次使用时都会再去取一次这个数据,防止有变化,同时不会被编译器优化掉
    • 发布于2019-04-03
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

在嵌入式中定义变量时volatile关键字的作用?