c语言volatile

作者&投稿:方祁 (若有异议请与网页底部的电邮联系)

经咐15533778009问: C语言中关键字volatile是什么意思 -
东至县盐酸回答: volatile的本意是一般有两种说法.1.“暂态的 2.“易变的.这两种说法都有可行.一个定义为volatile的变量是说这变量可能会被意想不到的改变,这样,编译器就不会去假设这个变量的值了.优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份. www.okeycar.com

经咐15533778009问: 计算机C语言中的关键字:volatile是什么意思?
东至县盐酸回答: 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了.精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份.下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 3). 多线程应用中被几个任务共享的变量

经咐15533778009问: C语言 中volatile关键字的用法
东至县盐酸回答: 我就用上面的例子吧 volatile int i = 10; int k = i; 这段代码如果没有加上volatile,它的执行过程是 i = 10, 10 ->reg寄存器,k = reg值,就是说,k=i实际上是从寄存器里读出来的.这样快捷高效,当然并不是每次都这样,因为寄存器有限.如果在10->reg寄存器的时候,i存储的内存变化了,也就是别的线程修改了i的值,k=i仍然会按照i=10来执行 加上volatile后,执行过程是 i = 10, k = *(int *)(&i); 它会从i的内存地址上去读,当然值会非常准确,但是效率会比从寄存器中读要慢很多.

经咐15533778009问: c 语言中关于 volatile 形参问题?? -
东至县盐酸回答: 会的,因为加上volatile限定符就表示他可能会被意外改变,优化器每次都会直接读他的值

经咐15533778009问: c语言中volatile关键字是什么含义 -
东至县盐酸回答: volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优...

经咐15533778009问: c语言中volatile关键字是什么含义怎么办呢? -
东至县盐酸回答: C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier. volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等.遇到...

经咐15533778009问: C语言的volatile的含义是什么.使用时会对编译器有什么暗示. -
东至县盐酸回答: volatile只是一个修饰符,以这个修饰符定义的变量,编译器不会优化,每次取变量的值都会从那个地址取一下,否则的话,编译器优化时,会把这个变量放在寄存器里面,有时不会到那个地址去读.比如有多个程序 进程读写这个变量时有用,避免数据不同步.

经咐15533778009问: C语言中volatile在什么情况下使用 -
东至县盐酸回答: volatile是易变的,不稳定的意思,volatile是关键字,是一种类型修饰符,用它修饰的变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其他线程等,遇到这个关键字声明的变量,编译器对访问该变量的代码不在进行优化,从而可以提供对特殊地址的稳定访问. volatile 关键字告诉编译器该变量是随时可能发生变化的,每次使用它的时候必须从内存中取出他的值,因而编译器生成的汇编代码会从原内存地址中读取数据使用.如果一个寄存器或者变量表示一个端口或者多个线程的共享数据,就容易出错,所以volatile可以保证对特殊地址的稳定访问.

经咐15533778009问: 关于c语言中的volatile限定符 -
东至县盐酸回答: 当一个对象的值可能会在编译器的控制或检测之外被改变时,例如一个被系统时钟更新的变量,那么对象应该声明成volatile.编译器执行的某些例行优化行为不能应用在已指定为volatile的对象上.volatile限定符的用法同const非常相似,都是作为类型的附加修饰符.volatile修饰符的主要目的是提示编译器,该对象的值可能在编译器未监测到的情况下被改变.因此编译器不能武断的对引用这些对象的代码作优化处理.

经咐15533778009问: volitale在c语言中是什么意思 -
东至县盐酸回答: .volatile总是与优化有关,编译器有一种技术叫做数据流分析,分析程序中的变量在哪里赋值、在哪里使用、在哪里失效,分析结果可以用于常量合并


本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网