[問題] volatile 用法

看板C_and_CPP作者 ( )時間7年前 (2016/12/23 16:24), 編輯推噓4(404)
留言8則, 5人參與, 最新討論串1/2 (看更多)
今天被問到的一個問題 假設在main 中有如此宣告 main() { volatile int i ; int j; i=1; i=2; j=1; j=2; } 請問兩整數變數i j 有何不同 這要如何解釋呢?? 感謝賜教 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.146.206 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1482481496.A.DE5.html

12/23 18:10, , 1F
在硬體中,你可能需要寫入i作控制。i=0;i=1;i=0;
12/23 18:10, 1F

12/23 18:11, , 2F
但在軟體最佳化,你只作了i=0;但是你加了volatile,編譯
12/23 18:11, 2F

12/23 18:12, , 3F
器不會對這作最佳化.
12/23 18:12, 3F

12/23 20:07, , 4F
通常這樣寫就會把i直接對應到某個hardware register
12/23 20:07, 4F

12/23 20:07, , 5F
以keil c的8051來說就會常用 _at_
12/23 20:07, 5F

12/24 00:01, , 6F
J=1可能會被compiler省略?
12/24 00:01, 6F

12/24 02:17, , 7F
請參考這篇文章 https://goo.gl/IjGTS
12/24 02:17, 7F

12/25 01:28, , 8F
volatile variables 可以想像成不會被放到暫存器
12/25 01:28, 8F
文章代碼(AID): #1ONDzOtb (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1ONDzOtb (C_and_CPP)