C語言之volatile關鍵字的常用特點

2021-09-30 00:09:06 字數 752 閱讀 7188

在嵌入式專案開發過程中,我們經常遇到_io,_i,_o等字首在型別之前,在常用的微控制器開發中可以檢視到這些符號的本身是代指volatile關鍵字,關於_io

在系統級應用中的深入含義及用法暫且不做介紹,這裡簡單記錄一下裸機開發過程中的常規知識點;

volatile關鍵字是一種型別修飾符,用它宣告的型別變數表示可以被某些編譯器未知的因素更改,比如:作業系統、硬體或者其它執行緒等。遇到這個關鍵字宣告的變數,編譯器對訪問該變數的**就不再進行優化,從而可以提供對特殊位址的穩定訪問。

比如下面兩句宣告:

int

volatile wint;

int mint;

volatile 指出wint是隨時可能發生變化的,每次使用它的時候必須從wint的位址中讀取,因而編譯器生成的彙編**會重新從wint的位址讀取資料。而優化做法是,由於編譯器發現兩次從wint讀資料的**之間的**沒有對wint進行過操作,它會自動把上次讀的資料再次傳遞出去。而不是重新從wint裡面讀。

這樣一來,如果wint是乙個暫存器變數或者表示乙個埠資料就容易出錯,所以說volatile 可以保證對特殊位址的穩定訪問

C語言之volatile關鍵字的應用

乙個定義為volatile的變數是說這變數可能會被意想不到地改變,這樣,編譯器就不會去假設這個變數的值了。精確地說就是,優化器在用到這個變數時必須每次都小心地重新讀取這個變數的值 from memory 而不是使用儲存在暫存器裡的備份。的意義是 比如兩個執行緒在執行中。第乙個執行緒已經初始化,將變數...

C語言volatile關鍵字

volatile 是易變的 不穩定的意思。很多人根本就沒見過這個關鍵字,不知道它的存在。也有很多程式設計師知道它的存在,但從來沒用過它。我對它有種 楊家有女初長成,養在深閨人未識 的感覺。volatile 關鍵字和const 一樣是一種型別修飾符,用它修飾的變數表示可以被某些編譯器未知的因素更改,比...

C語言關鍵字volatile

volatile修飾變數表示該變數易受外界影響發生改變,volatile強烈要求編譯器每次對變數進行訪問都要從記憶體中進行 int a 10 b a c b 當編譯器掃到第一行時10賦給了a 自後a變數的值沒有發生改變,a賦給了b,b賦給了c 由於cpu訪問記憶體的速度較慢,編譯器為了提高效率,直接...