volatile关键字是一种类型修饰符,用它声明的类型变量表明能够被某些编译器不知道的要素更改,比方 操作体系、硬件或许其它线程等。遇到这个关键字声明的变量,编译器对拜访该变量的代码就不再进行 优化,然后能够供给对特别地址的安稳拜访。volatile区别C程序员和嵌入式体系程序员的最基本的问题。搞嵌入式的家伙们常常同硬件、中止、RTOS等等打交道,所有这些都要求用到volatile变量。不懂得volatile的内容将会带来灾祸。int volatile nVint; 当要求运用volatile 声明的变量的值时,体系总是从头从它地点的内存读取数据,即便它前面的指令刚刚从该处读取过数据。并且读取的数据马上被保存。 由于拜访寄存器的速度要快过RAM,所以编译器一般都会作削减存取外部RAM的优化,关于变量, 编译器发现两次从i读数据的代码之间的代码没有对i进行过操作,它会主动把前次读的数据放在b中。而不是从头从i里边读取. 这样以来,假如i是一个寄存器变量或许表明一个端口数据就简单犯错,所以说volatile能够确保对特别地址的安稳拜访。volatile 指出 i是随时或许发生变化的,每次运用它的时分有必要从i的地址中读取.•;存储器映射的硬件寄存器一般也要加volatile阐明,由于每次对它的读写都或许由不同含义,如并行设备的硬件寄存器(如:状况寄存器)•;中止服务程序中修正的供其它程序检测的变量需求加volatile,如一个中止服务子程序中会拜访到的非主动变量(Non-automatic variables)•;多使命环境下各使命间同享的数据,如多线程使用中被几个使命同享的变量
C言语类型修饰符Volatile的运用
Wec288{display:none;}volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如操作系
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/319244.html