volatile的意思是告訴編譯器,在編程源代碼時,對這個變量不要使用優化。
在壹般的程序設計中,如:
int *a; int b;
b = (*a) * (*a);這種情況。
通常編譯器為了減少存儲器的讀寫時間,會把代碼優化為:
int *a; int b; int c;
c = *a;
b = c * c;
因為外部存儲器的讀寫速度肯定趕不上內存的讀寫速度,這樣可以省壹次外部存儲器的讀取時間,從而提高速度。
如果把int *a改為volatile int* a編譯器就不會自動把它優化掉了。在整個運算過程中,對變量*a的值讀取了再次。防止因變量*a的值在這壹期間發生了改變,而導致程序結果的錯誤。