1.关键字volatile有什么含义以及该关键字的典型例子。
被定义为volatile的变量说明该变量会被意想不到的改变,这样,编译器就不会去假设这个变量的值。精确的说,优化器在用到这个变量时必须每次小心的重新读取这个变量值,而不是简单的使用保存在寄存器里的备份。
例子:
a).并行设备的硬件寄存器(如:状态寄存器)。
b).一个中服子程序中会访问到的非自动变量(全局变量和静态变量)。
c).多线程应用中被几个任务共享的变量。
扩展:
1.一个参数既可以是const还可以是volatile吗?为什么?
是可以的,例如一个只读的状态寄存器,状态寄存器是volatile的,因为他可能被意向不到的改变
,他是const因为程序不应该试图去改变它。
2.一个指针可以是volatile吗?为什么?
可以的,例如一个中服务子程序修改一个buffer的指针时。
(再例如:buffer指向一个地址被A线程使用,B线程修改了buffer所指的地址,同时希望A线程使用新地址,设置volatile。)
3.下面函数能实现平方吗?
int square(volatile int *ptr)
{
return *ptr * *ptr;
}
阅读(1165) | 评论(0) | 转发(0) |