C語言中volatile修飾符的作用是什麼?albert342018-02-10 18:36:46

volatile告訴編譯器每次用到這個變數的時候都去從記憶體中重新讀取。例如:微控制器中的暫存器定義通常都要用volatile修飾,因為暫存器的值會被硬體修改。還有就是可能被中斷服務程式修改的全域性變數。例如a=1;b=a;如果不用volatile定義,通常會被編譯器最佳化成a=1;b=1;如果恰好執行完第一句時a被中斷服務程式改成了2,最佳化後的程式中b的值並沒有改變,這不是我們想要的。在a的宣告中加上volatile就解決了這個問題。