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

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

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

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

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

  • 相关阅读:
    简易四则运算
    对GitHub的认识
    对‘前辈’们的博文有感
    javascript中的JSON序列化与反序列化
    初步体验javascript try catch机制
    JQuery拾遗
    直面Javascript面试题算法思路
    ECMAScript5下Array的方法
    浅谈javascript中的数据类型和引用类型
    ECMAScript 5.1中对属性的操作
  • 原文地址:https://www.cnblogs.com/chenchenluo/p/2163865.html
Copyright © 2011-2022 走看看