[問題] volatile 用法

作者: caxz ( )   2016-12-23 16:24:54
今天被問到的一個問題
假設在main 中有如此宣告
main()
{
volatile int i ;
int j;
i=1;
i=2;
j=1;
j=2;
}
請問兩整數變數i j 有何不同
這要如何解釋呢??
感謝賜教
作者: Leadgen (新竹~)   2016-12-23 18:10:00
在硬體中,你可能需要寫入i作控制。i=0;i=1;i=0;但在軟體最佳化,你只作了i=0;但是你加了volatile,編譯器不會對這作最佳化.
作者: james732 (好人超)   2016-12-23 20:07:00
通常這樣寫就會把i直接對應到某個hardware register以keil c的8051來說就會常用 _at_
作者: dijkstra (邪惡數學家)   2016-12-24 00:01:00
J=1可能會被compiler省略?
作者: saxontai (黑暗,點綴孤零零的星)   2016-12-24 02:17:00
請參考這篇文章 https://goo.gl/IjGTS
作者: OPIV (Monitor)   2016-12-25 01:28:00
volatile variables 可以想像成不會被放到暫存器

Links booklink

Contact Us: admin [ a t ] ucptt.com