2014年3月4日 星期二

Volatile(關鍵字)使用方式

C中的Volatile應用廣泛,大多用於嵌入式系統,此功能主要是不讓Compile
最佳化修改了暫存器中的變數值,使用時機如下範例:

int i,j,k;
int *ptr;

i=*ptr;  j=*ptr; k=*ptr;

原本三個變數應被讀取3次,但此寫法只會讀取1次。

以上變數i,j,k在編譯過程中有可能會被Comipler最佳化,
導致i=j=k=*ptr的結果,而我們希望此3個變數不要因最佳化而導致數值相同。

修改如下

volatile int *ptr;

讓Compiler知道ptr不要產生最佳化,而i,j,k三個變數會被讀取3次。


Ref:
1.http://freestyler.pixnet.net/blog/post/23872864-c-c%2B%2B%E4%B8%AD%E7%9A%84volatile%E4%BD%BF%E7%94%A8%E6%99%82%E6%A9%9F%3F



沒有留言:

張貼留言