volatile(可變的)這個關鍵字

2021-06-14 19:34:06 字數 359 閱讀 4007

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關鍵字,則編譯器可能優化讀取和儲存,可能暫時使用暫存器中的值,如果這個變數由別的程式更新了的話,將出現不一致的現象。下面舉例說明。經常...