Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24366
  • 博文数量: 9
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-21 11:31
文章分类

全部博文(9)

文章存档

2016年(4)

2015年(3)

2013年(2)

我的朋友

分类: C/C++

2016-08-04 09:31:00

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;
}


阅读(1126) | 评论(0) | 转发(0) |
0

上一篇:C/C++拾遗(一)

下一篇:C++出现析构coredump

给主人留下些什么吧!~~