c语言中volatile关键字含义
2012-01-30 16:25
302 查看
volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。 例如: volatile int i=10; int j = i; ... int k = i; volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。 而优化做法是,由于编译器发现两次从i读数据的代码之间的代码没有对i进行过操作,它会自动把上次读的数据放在k中。而不是重新从i里面读。这样以来,如果i是一个寄存器变量或者表示一个端口数据就容易出错,所以说volatile可以保证对特殊地址的稳定访问,不会出错
建议使用volatile变量的场所:(1) 并行设备的硬件寄存器(2) 一个中断服务子程序中会访问到的非自动变量(全局变量)(3) 多线程应用中被几个任务共享的变量
相关文章推荐
- 探讨C语言中关键字volatile的含义
- 探讨C语言中关键字volatile的含义
- 探讨C语言中关键字volatile的含义_C
- C语言中关键字volatile的含义
- C语言中关键字volatile的含义[转载]
- c语言中volatile关键字的含义
- 探讨C语言中关键字volatile的含义
- 通过反汇编分析C语言中volatile关键字的含义
- c语言中volatile关键字是什么含义
- C语言中关键字volatile的含义
- C语言中关键字volatile的含义【转】
- volatile关键字的含义和作用
- java中volatile关键字的含义--volatile并不能做到线程安全
- java中volatile关键字的含义
- java中volatile关键字的含义
- java中volatile关键字的含义
- java中volatile关键字的含义
- 关键字volatile的含义及常见用法
- C语言之auto、static、register、const、volatile、extern关键字
- java中volatile关键字的含义