1. 程式人生 > >const和volatile同時修飾同一個變數

const和volatile同時修飾同一個變數

主要要搞清楚 編譯期 和 執行期的關係。
編譯期就是 C 編譯器將 原始碼轉化為 彙編再到機器程式碼 的過程。
執行期就是 實際的機器程式碼在CPU執行 的過程。很多書上說的東西,其實都只是指編譯期進行的事情。const 和 volatile 也一樣,所謂的 const ,只是告訴編譯器要保證在 C的“原始碼”裡面,沒有對該變數進行修改的地方,就是該變數不能而出現在賦值符號左邊。實際執行的時候則不是 編譯器 所能管的了。同樣,volatile的所謂“可能被修改”,是指“在執行期間”可能被修改。也就是告訴編譯器,這個變數不是“只”會被這些 C的“原始碼”所操縱,其它地方也有操縱它們的地方。所以,C編譯器就不能隨便對它進行優化了 。所以每次讀它要在它記憶體中讀,不要在暫存器中讀備份。