C語言中的volatile是什麼意思?
volatile可以翻譯爲:易變的
如:
u8 a,b;
{
a=2;
b=a;
}
這時編器會把它改成:
u8 a,b;
{
a=2;
b=2;
}
當運行到中間位置,中斷把a改了,結果就是錯的。
volatile就爲了解決這個問題出現的,它會讓編譯器更老實!
*****************************************************
定義爲volatile的變量是說這個變量可能會被意想不到地改變,這樣編譯器就不會去假設這個變量的值了。精確地說就是,優化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器裏的備份。
volatile變量主要用在以下幾個方面:
(1)並行設備的硬件寄存器(如狀態寄存器);
(2)一箇中斷服務子程序中會訪問到的非自動變量;
(3)多線程應用中被幾個任務共享的變量。
摘自:http://bbs.21ic.com/icview-339921-1-1.html