zoukankan      html  css  js  c++  java
  • volatile 的应用 沉沉_

            C++中有多种存储器说明符,如auto、register、static、extern、mutable以及volatile等。如果从事嵌入式行业硬件等工作,则需要对volatile这个存储器说明符有深刻的理解,需要知道什么时候改用它声明变量。

      volatile,意如其名:易变的,易挥发的。它表明:即使程序代码未对内存单元进行修改,其值也可能发生变化。对于学习软件的人来说,这是否不可理解,对于稍微有点硬件知识的人,则很好理解。例如:串口接收数据,则有可能是硬件接收数据而不是软件改变数据。或者两个程序共享数据,另一方程序可能单方面修改内存数据。所以需要重新读取内存的数据才能保证不出错误。而如果不将这种类型的内存变量申明为volatile,则编译器有可能该内存变量进行优化。

      所谓编译器对寄存器变量进行优化指的是:如果程序的几条语句使用一个变量多次,编译器就会将该值缓存到寄存器,因为访问寄存器的速度要比访问内存的速度快很多,而这种优化则假设该变量在这多次的使中其值不发生变化。

      所以,如果一个变量在不经软件修改的情况下其值可能发生变化,则需要将其显式的申明为volatile,以防止寄存器对其进行优化。

  • 相关阅读:
    sysctl.conf文件详解
    EOF的用法
    centos7下mail邮件的查看删除、禁止部分应用发邮件
    change命令
    mac访达显示路径复制路径
    MacOS修改默认的python版本和pip版本
    mac自带录屏
    excel
列A
去除列B后的数据
    selenium初识:selenium的安装及简单实现百度搜索
    React如何运行从github上下载的代码
  • 原文地址:https://www.cnblogs.com/chenchenluo/p/2163865.html
Copyright © 2011-2022 走看看