C语言中volatile的用法
来源:互联网 发布:网络语泥垢是什么意思 编辑:程序博客网 时间:2024/06/05 19:24
一:告诉compiler不能做任何优化
比如要往某一地址送两指令:
int *ip =...; //设备地址
*ip = 1; //第一个指令
*ip = 2; //第二个指令
以上程序compiler可能做优化而成:
int *ip = ...;
*ip = 2;
结果第一个指令丢失。如果用volatile, compiler就不允许做任何的优化,从而保证程序的原意:
volatile int *ip = ...;
*ip = 1;
*ip = 2;
即使你要compiler做优化,它也不会把两次付值语句间化为一。它只能做其它的优化。这对device driver程序员很有用。
二:表示用volatile定义的变量会在程序外被改变,每次都必须从内存中读取,而不能把他放在cache或寄存器中重复使用。
如 volatile char a;
a=0;
while(!a){
//do some things;
}
doother();
如果没有 volatile doother()不会被执行
- C语言中volatile的用法(转)
- C语言中volatile的用法
- C语言中volatile的用法
- C语言 中volatile关键字的用法
- c语言中volatile的用法
- C语言中static,extern,volatile的用法
- 嵌入式C语言中const与volatile的用法详解
- C语言中const,volatile,restrict的用法总结
- C语言中关键字const、static、volatile的用法分析
- C语言中volatile的用法及意义
- C语言中const,volatile,restrict的用法总结
- C中volatile的用法
- C中volatile的用法
- c中volatile的用法
- C语言 volatile用法
- C语言volatile用法
- C语言volatile用法
- c语言关键字volatile的用法3
- 预处理指令
- Python中利用guiqwt进行曲线数据拟合
- 头文件的作用
- Android ActionBar使用方法
- 对多个相互分离的目标进行标记
- C语言中volatile的用法
- 临时存贮
- 学android前的一些问题
- qemu1.4.0源码阅读笔记————vl.c阅读
- 高级宏定义"\","#","#@"和"##"
- 面试题之Android为什么是单线程的?
- SQL中in 、not in 、exists、not exists用法和差别
- 好的软件人员一生必看的六十本书
- 函数指针