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
沒有留言:
張貼留言