C語言中的volatile關鍵字

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章