| 嵌入式编程中经常用到 volatile这个关键字,在网上查了下他的用法可以归结为以下两点: 
 一:告诉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()不会被执行
 
 本文引用通告地址:http://lionwq.spaces.**/articles/article/item/16724#
 |