volatile(可變的)這個關鍵字
volatile 變數的訪問不能快取到暫存器,每次使用時需要重新訪問 例:
#define prangeaddress (*((volatile unsigned int *) 0x100080))
第一步:要把它強制轉換為指標型別:(volatile unsigned int *) 0x100080
*((volatile unsigned int *) 0x100080)
第三步:最好把#define巨集中的引數用括號括起來
#define prangeaddress (*((volatile unsigned int *) 0x100080))
volatile關鍵字的作用
在c c 語言中經常會遇到volatile關鍵字,它的字面意思是 可變的 不穩定的 volatile 會影響編譯器編譯的結果,被volatile修飾的變數是隨時可能發生變化的,編譯器對volatile變數有關的運算,不進行編譯優化,以免出錯,vc 在產生release版可執行碼時會進行編譯優化,加v...
volatile關鍵字的應用
volatile宣告的變數不會因為編譯器的優化而改變,每次對變數的讀取都是直接在變數的記憶體單元中進行,沒有宣告volatile的變數可能會直接從cpu的暫存器中訪問。在c程式進行編譯的時候,編譯器會進行一些優化,比如 int i 10 int a i 某些對i沒有進行明確操作的 int b i 此...
volatile關鍵字的使用
volatile提醒編譯器它後面所定義的變數隨時都有可能改變,因此編譯後的程式每次需要儲存或讀取這個變數的時候,都會直接從變數位址中讀取資料。如果沒有volatile關鍵字,則編譯器可能優化讀取和儲存,可能暫時使用暫存器中的值,如果這個變數由別的程式更新了的話,將出現不一致的現象。下面舉例說明。經常...