c++ volatile关键字
2015-11-02 13:01
344 查看
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。 volatile的本意是“易变的”,不过翻译成“直接存取原始内存地址”更为合适。“易变”是因为外在因素引起的,象多线程,中断等,并不是因为用volatile修饰了的变量就是“易变”了,假如没有外因,即使用volatile定义,它也不会变化
volatile 指出 i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的汇编代码会重新从i的地址读取数据放在b中。而优化做法是,由于编译器发现两次从i读数据的代码之间的代码没有对i进行操作,它会自动把上次读的数据放在b中。而不是重新从i里面读。volatile可以保证对特殊地址的稳定访问。
volatile int i=10; int a = i; // 其他代码,并未明确告诉编译器,对 i 进行操作 int b = i;
volatile 指出 i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的汇编代码会重新从i的地址读取数据放在b中。而优化做法是,由于编译器发现两次从i读数据的代码之间的代码没有对i进行操作,它会自动把上次读的数据放在b中。而不是重新从i里面读。volatile可以保证对特殊地址的稳定访问。
相关文章推荐
- 详解C++中命名空间的意义和用法
- 【C/C++学院】0823-静态联合编译与动态联合编译/父类指针子类指针释放/虚函数/纯虚函数概念以及虚析构函数/抽象类与纯虚函数以及应用/虚函数原理/虚函数分层以及异质链表/类模板的概念以及应用
- C++11 标准新特性:Defaulted 和 Deleted 函数
- c语言学习之基础知识点介绍(十):内存空间模型、地址解释及指针变量
- 今日学习札记——C++程序设计1(11-02)
- C++标准库阅读摘要
- 3.2 ACM输入输出--多组测试用例--C、C++
- ——黑马程序员——C语言中的指针(二)
- C语言第五章 语句
- C++11 多线程下生产者消费者模型详解
- 做c语言的码农专业发展方向
- C语言设计模式
- C++ 初始化列表
- 外部exe程序启动CAD并且自动加载CAD的ARX程序的过程
- OC语言中BOOL 和 bool 区别
- 《C++ primer》英文第五版阅读笔记(七)——定义自己的数据类型
- C语言第四章
- C语言程序如何优化
- 某国内知名自主研发游戏公司C++笔试题
- 数码视讯2015秋季校园招聘C++笔试题