STM32 volatile關鍵字


為了提供對特殊地址的穩定訪問。

[C]  純文本查看 復制代碼
?
1
2
3
int i=10;
int j=i;     //1
int k=i;    //2

此時編譯器對上面代碼進行優化,因為在1、2語句中,i 沒有被用作左值(沒有被賦值)。這時候編譯器認為i 的值沒有發生改變,所以在1語句時從內存取出 i 的值賦給 j 之后,這個值沒有被丟掉,而是在2語句中繼續用這個值賦值給k。編譯器不會生成匯編代碼重新從內存里取 i ,這樣提高了效率

[C]  純文本查看 復制代碼
?
1
2
3
volatile int i=10;
int j=i;
int k=i;

volatile 關鍵字告訴編譯器,i 是隨時可能發生變化的,每次使用它的時候必須從內存取出 i 的值,因而編譯器生成的匯編代碼會重新從 i 的地址處讀取數據放在k中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM