lzth.net
当前位置:首页 >> C语言中volAtilE在什么情况下使用 >>

C语言中volAtilE在什么情况下使用

volatile的本意是“易变的”,volatile定义的变量它的值在编译时是会改变的,跟const相反,而const定义的变量一直不会变的,如果变量加上volatile修饰,则编译器保证对此变量的读写操作都不会被优化(肯定执行)。

volatile int i = 10; int k = i; 这段代码如果没有加上volatile,它的执行过程是 i = 10, 10 ->reg寄存器,k = reg值,就是说,k=i实际上是从寄存器里读出来的。这样快捷高效,当然并不是每次都这样,因为寄存器有限。如果在10->reg寄存器的时...

简单的理解就是这个变量可能会被外部函数改变,为了让这个改变能有效执行,不被编译器优化掉。 举个例子吧,一个函数用了一个外部的变量,但这个变量在此函数中没有改变,只是引用,这时候编译器会去做优化,把它的值暂放在内部寄存器中,用的时...

当一个对象的值可能会在编译器的控制或检测之外被改变时,例如一个被系统时钟更新的变量,那么对象应该声明成volatile。编译器执行的某些例行优化行为不能应用在已指定为volatile的对象上。volatile限定符的用法同const非常相似,都是作为类型的...

一个对象的值可能会在编译器的控制或检测之外被改变时,例如一个被系统时钟更新的变量,那么对象应该声明成volatile。编译器执行的某些例行优化行为不能应用在已指定为volatile的对象上。volatile限定符的用法同const非常相似,都是作为类型的附...

有用,当然有用,现在你认为作用不大那是因为你功力还不够深。具体有多大用处我一句二句也说不清楚,还是让百度百科来解释一下吧: http://baike.baidu.com/link?url=wxurTTnp_RwEFWiW_HJQwFBOpX6cvY_mVqHFw0-4AYrdKxDD6a16Lh4neKoCrpSqDobtiJvI...

C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。 volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个...

一般用在多线程程序中,由于某个变量可能被多个线程修改,因此,修饰为volatile,使其每次读取,都是从存储volatile变量的地址中去取,而不是取寄存器中的值。 volatile int a; 你的这种设想,都是最好要用volatile的地方,只要这个变量被反复频...

“一个定义为volatile的变量是说这变量可能会被意想不到地改变,” 举一个嵌入式开发的例子。在STM32F10x_FWLib 标准函数库对volatile的使用。 这段代码在stm32f10x.h中 当变量为输入输出之时,程序中不一定出现赋值,但变量会根据硬件状态改变。 ...

网站首页 | 网站地图
All rights reserved Powered by www.lzth.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com