一個變量聲明爲volatile變量,說明這個變量是易變的,這樣系統就會每次都從它所在的內存中讀取該變量的值,即使前面剛剛已經讀取過該變量的值,即不會使用保存在寄存器的備份。遇到這個關鍵字的聲明的變量,編譯器對訪問該變量的代碼不會優化,提供穩定的訪問。
volatile變量的使用例子:並行的設備的硬件寄存器;一箇中斷服務子程序中會訪問的非自動變量;多線程應用中被幾個任務共享的變量。
問題1:一個參數既可以是const還可以是volatile嗎?
這個是可以的,只讀狀態寄存器就是一個典型例子,它爲volatile是因爲它可能被意想不到地改變,它爲const是因爲程序不應該試圖去修改它。
問題2:一個指針可以是volatile嗎?
這個也是可以的,當一箇中斷服務子程序修改一個指向一個buffer的指針時。