【每日一C之十一】C语言volatile
2014-04-03 21:51
267 查看
每日一C之volatile
每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。今日贝壳:C语言volatile用于避免因编译器优化导致的错误。
CPU访问内存的速度远快于访问设备地址,访问寄存器速度又快于内存,为了提高程序的运行速度,编译器会对程序进行优化。如:
buffer=Read(0xEE);
//读取0xEE端口数据,存入a
a=buffer;
buffer=Read(0xEE);
[b]//读取0xEE端口数据,存入b[/b]
b=buffer;
编译器可能会优化成:
[b]buffer=Read(0xEE);[/b]
[b] a=buffer; [/b]
[b] b=buffer;
//此次优化能减少一次设备访问[/b]
问题:如果0xEE端口内容实时更新,此次优化将会违背程序的初衷, volatile则用于解决此问题,提示编译器不要对此变量进行优化,从而保证实时性。用法如下:
volatile
[b]buffer=Read(0xEE);[/b]
使用场合:volatile用于修饰可能被外界中断修改的变量,或其他线程修改的变量等。
1.中断程序
2.多线程程序
等程序设计中常会使用到volatile。
[b] [/b][b]Have
a nice day ![/b]
相关文章推荐
- 每日一讲:C语言getchar函数的用法
- GCC在C语言中内嵌汇编 asm __volatile__
- C语言中volatile关键字的作用
- C语言中volatile关键字的作用
- 解读关键字volatile (C语言面试题分析之一)
- iOS每日一记---------------------之C语言的一些重点难点
- C语言的那些小秘密之volatile
- C语言中volatile关键字的作用
- C语言volatile关键字的用法
- 【每日算法】C语言8大经典排序算法(1)
- 你了解C语言中的关键字volatile吗?
- C语言中volatile关键字的学习
- C语言中auto,register,static,const,volatile的区别详细解析
- C语言的那些小秘密之volatile
- C语言中volatile关键字
- C语言的volatile关键字分析
- C语言中,修饰符volatile的含义是什么?举例说明其使用场合
- C语言中volatile关键字的作用
- C语言中volatile关键字的作用
- C语言之volatile关键字的应用