volatile(英文解释:挥发性的,不稳定的)关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。使用该关键字的例子如下:int volatile nVint; 当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。例如:volatile int i=10;int a = i;...//其他代码,并未明确告诉编译器,对i进行过操作in..
转载 2012-07-15 14:05:00
78阅读
2评论
一、意义; 二、使用场景; 三、嵌入式编程中经常用到 volatile这个关键字; 四、volatile与const; volatile与指针 ;
原创 2022-01-12 15:42:59
134阅读
emOsprey 鱼鹰谈单片机 2月21日预计阅读时间: 4 分钟 和 const 不同(关于 const 可以看 const 小节),当一个变量声明为 volatile,说明这个变量会被意想不到的改变。最为...
转载 2019-08-18 16:58:00
107阅读
2评论
const 告诉编译器:这是不会改变的(允许编译器执行额外的优化);volatile告诉编译器:不知道何时会优化,防止编译器依据变量的稳定性作任何优化。
原创 2022-08-30 12:21:04
96阅读
一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:将内存变
转载 精选 2013-07-23 21:54:17
1433阅读
1.一般用于修饰指针,该指针指向内容“易变”的内存;用volatile的话,是为了告诉编译器,不要去做编译优化,在使用这个存储块的时候必须每次都从指向的内存处拿东西; 例子:循环多次从一个指针中取内容,编译器觉得既然多次重复的取一个指针的内容,那干脆就把指针的内容放在寄存器里(寄存器是CPU的一个组 ...
转载 2021-07-29 17:16:00
269阅读
2评论
引子1 猜猜看,下面这段代码有什么问题: 答案: 本来代码完全正常,但是为了优化性能,打开了编译器的优化。但是发现这个函数被编译器优化掉了。为了防止被优化掉,需要给函数的参数加上volatile: 引子2 再猜猜看,《程序员面试宝典》这段代码有什么问题: 答案: 由于*ptr指向一个volatile
转载 2017-06-13 15:47:00
246阅读
2评论
1. volatile的作用 volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。 声明时语法:volatile int ...
转载 2021-08-31 10:52:00
112阅读
2评论
volatile的介绍volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。 #include void main(){ volatile int i = 1
原创 2023-03-03 13:06:56
200阅读
Register 用register声明的变量称着寄存器变量,在可能的情况下会直接存放在机器的寄存器 中。但对32位编译器不起作用。当global optimizations(全局优化)开的时候,它会做出 选择是否放在自己的寄存器中;只是其他与registerkeyword有关的其他符号都对32位编
转载 2017-05-03 09:29:00
194阅读
2评论
volatile概念volatile是易变的、不稳定的意思。volatile关键字和const一样是一种类型修饰符,用它修饰的变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。先看看下面的例子: int i=10; int j = i;//(1)语句 int k = i;//(2)语句这时候编译器对代码进行优化,因为在(1)、(2)两条语句中,i 没有被用作左值。这时候编译器认为i 的值没有发生改变,所以在(1)语句时从内存中取出i 的值赋给j 之后,这个值并... Read More
转载 2013-08-02 22:03:00
150阅读
2评论
volatilevolatile表示可以被某些编
原创 2022-10-31 19:41:38
204阅读
遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。volatile 是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。下面是volatile变量的几个例子:  1).并行设备的硬件寄存器(如:状态寄存器)  2).一个中断服务子程序中会访问到的非自动变
原创 2011-06-23 15:53:00
604阅读
变量莫名其妙的不发生改变了,这是怎么回事?明明已经满足了条件,为啥还没动作?
转载 2022-01-05 09:36:11
105阅读
一.前言 1.编译器优化介绍: 由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软
转载 2017-04-19 09:59:00
283阅读
关于const的用法,现在大概前前后后应该写了有两篇文章,以前学习的时候,用法体会不是那么深刻,为啥这么说呢
原创 2022-03-17 15:41:41
169阅读
背景 此微博,引发了朋友们的大量讨论:赞同者有之;批评者有之;当然,更多的朋友,是希望我能更详细的解读C/C++ Volatile关键词,来佐证我的微博观点。而这,正是我写这篇博文的初衷:本文,将详细分析C/C++ Volatile关键词的功能 (有多种功能)、Volatile关键词在多线程编程中存
转载 2017-11-17 16:51:00
222阅读
1.为什么用volatileC/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别
转载 2023-02-17 09:58:59
63阅读
1. 为什么用volatile?     C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 ​​memory barrier​​。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:A volatile specifier is a
转载 2022-12-11 17:09:53
99阅读
c++概述: 新手入门《c++程序设计》,选择最新版,建议一门语言学到精通,再扩展。 编译类型语言cc++等;解释类语言:python、PHP等;脚本语言:javascript、python等。 visual studio 2019:创建新建项目--控制台应用--配置控制台--创建;编译:生成- ...
转载 2021-09-24 09:42:00
261阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5