volatile 影響編譯器編譯的結果,指出,volatile 變量是隨時可能發生變化的,與volatile變量有關的運算,不要進行編譯優化,以免出錯,(VC++ 在產生release版可執行碼時會進行編譯優化,加volatile關鍵字的變量有關的運算,將不進行編譯優化。)。 例如: volatile int i=10; int j = i; ... int k = i; volatile 告訴編譯器i是隨時可能發生變化的,每次使用它的時候必須從i的地址中讀取,因而編譯器生成的可執行碼會重新從i的地址讀取數據放在k中。 而優化做法是,由於編譯器發現兩次從i讀數據的代碼之間的代碼沒有對i進行過操作,它會自動把上次讀的數據放在k中。而不是重新從i裏面讀。這樣以來,如果i是一個寄存器變量或者表示一個端口數據就容易出錯,所以說volatile可以保證對特殊地址的穩定訪問,不會出錯
c語言中volatile關鍵字含義
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
ClickHouse內幕(2)基礎數據結構
原創
2024-06-07 23:54:50
兒童節變身小小音樂家*用ModelArts製作一張AIGC音樂專輯
原創
2024-05-31 11:04:39
【建議收藏】手把手教您如何升級到DevExpress最新版本!
原創
2024-05-30 12:19:46
實現“代碼可視化”需要了解的前置知識-編譯器中端
原創
2024-05-21 11:56:05
「Java開發指南」如何用MyEclipse搭建GWT 2.1和Spring?(二)
原創
2024-05-17 12:21:26
Spring Boot3,啓動時間縮短 10 倍!
原創
2024-05-13 02:20:47
「Java開發指南」如何用MyEclipse搭建GWT 2.1和Spring?(一)
原創
2024-05-08 11:36:35
聊聊Swift中的宏
原創
2024-04-18 23:26:09
低代碼集成Java系列:高效構建自定義插件
原創
2024-04-15 10:22:44
實現“代碼可視化”需要了解的前置知識-編譯器前端
原創
2024-04-12 23:16:44
如何使用符號表對象來實現記錄類型
原創
2024-04-11 23:07:59
編譯器如何避免生成冗餘的goto指令
原創
2024-04-11 23:07:56
域控軟件安全隔離關鍵技術剖析:MCU域 VS SOC域
原創
2024-04-11 22:41:57
數據結構筆記淺記(九)存儲設備
原創
2024-04-08 23:38:13