http://gharee.com/wiki/index.php?action=history&feed=atom&title=Volatile_%28%E6%98%93%E5%8F%98%E5%8F%98%E9%87%8F%29 123,123,123 2025-06-28T17:23:13Z 本wiki的該頁(yè)面的版本歷史 MediaWiki 1.21.2 http://gharee.com/wiki/index.php?title=Volatile_(%E6%98%93%E5%8F%98%E5%8F%98%E9%87%8F)&diff=79&oldid=prev Admin:以“volatile關(guān)鍵字<br> volatile這個(gè)關(guān)鍵字是變量修飾符,常用在變量類型的前面,以告訴編譯器和接下來(lái)的程序怎么對(duì)待這個(gè)變量...”為內(nèi)容創(chuàng)建頁(yè)面 2014-09-12T06:02:17Z <p>以“volatile關(guān)鍵字&lt;br&gt; volatile這個(gè)關(guān)鍵字是變量修飾符,常用在變量類型的前面,以告訴編譯器和接下來(lái)的程序怎么對(duì)待這個(gè)變量...”為內(nèi)容創(chuàng)建頁(yè)面</p> <p><b>新頁(yè)面</b></p><div>volatile關(guān)鍵字&lt;br&gt;<br /> <br /> volatile這個(gè)關(guān)鍵字是變量修飾符,常用在變量類型的前面,以告訴編譯器和接下來(lái)的程序怎么對(duì)待這個(gè)變量。&lt;br&gt;<br /> <br /> 聲明一個(gè)volatile變量是編譯器的一個(gè)指令。編譯器是一個(gè)將你的C/C++代碼轉(zhuǎn)換成機(jī)器碼的軟件,機(jī)器碼是arduino上的Atmega芯片能識(shí)別的真正指令。&lt;br&gt;<br /> <br /> 具體來(lái)說(shuō),它指示編譯器編譯器從RAM而非存儲(chǔ)寄存器中讀取變量,存儲(chǔ)寄存器是程序存儲(chǔ)和操作變量的一個(gè)臨時(shí)地方。在某些情況下,存儲(chǔ)在寄存器中的變量值可能是不準(zhǔn)確的。&lt;br&gt;<br /> <br /> 如果一個(gè)變量所在的代碼段可能會(huì)意外地導(dǎo)致變量值改變那此變量應(yīng)聲明為volatile,比如并行多線程等。在arduino中,唯一可能發(fā)生這種現(xiàn)象的地方就是和中斷有關(guān)的代碼段,成為中斷服務(wù)程序。&lt;br&gt;<br /> 例子&lt;br&gt;<br /> &lt;pre style=&quot;color:green&quot;&gt;<br /> //當(dāng)中斷引腳改變狀態(tài)時(shí),開(kāi)閉LED<br /> <br /> int pin = 13;<br /> volatile int state = LOW;<br /> <br /> void setup()<br /> {<br /> pinMode(pin, OUTPUT);<br /> attachInterrupt(0, blink, CHANGE);<br /> }<br /> <br /> void loop()<br /> {<br /> digitalWrite(pin, state);<br /> }<br /> <br /> void blink()<br /> {<br /> state = !state;<br /> }<br /> &lt;/pre&gt;</div> Admin