适合部门做的集体活动:C++volatile用法
来源:百度文库 编辑:偶看新闻 时间:2024/06/03 17:52:19
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值(From Memory),而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:
1) 并行设备的硬件寄存器(如:状态寄存器)
2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
3) 多线程应用中被几个任务共享的变量
1) 并行设备的硬件寄存器(如:状态寄存器)
2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
3) 多线程应用中被几个任务共享的变量
1)一个参数既可以是const还可以是volatile吗?解释为什么。
2)一个指针可以是volatile 吗?解释为什么。
3)下面的函数有什么错误:
int square(volatile int *ptr)
{
}
下面是答案:
1)是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。
2)是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。
3)这段代码有点变态。这段代码的目的是用来返指针*ptr指向值的平方,但是,由于*ptr指向一个volatile型参数,编译器将产生类似下面的代码:
int square(volatile int *ptr)
{
}
由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。结果,这段代码可能返不是你所期望的平方值!正确的代码如下:
long square(volatile int *ptr)
{
}
C语言中的volatile是什么意思
关于c语言中的volatile限定符
c语言中volatile关键字是什么含义
Volatile Content (150C x 24hrs)是什么意思?
c语言...用法
c 中#define 用法
c语言“%”用法
in a volatile world
volatile acidity是什么啊?
DirecX 9.0C的用法
c语言 delay()的用法?
while 的用法 c语言
flash-simulate/non-volatile
3c+ORC剑圣的用法?
c语言关于函数的用法
可有C语言函数+用法
turbo c中各菜单的用法。
foreach的用法c语言和c#
Turbo C语言软件的用法
C语言中return的用法???
c语言中cos函数的用法
析构函数用法的问题?(c++)
C语言程序设计的命令集,及其用法!
C语言中fopen的用法