【每日一C之十一】C語言volatile

來源:互聯網
上載者:User

每日一C之volatile       每天拾一個C語言貝殼,厚積薄發,積跬步以致千裡。
 今日貝殼:C語言volatile用於避免因編譯器最佳化導致的錯誤。            CPU訪問記憶體的速度遠快於訪問裝置地址,訪問寄存器速度又快於記憶體,為了提高程式的運行速度,編譯器會對程式進行最佳化。如:            buffer=Read(0xEE);    //讀取0xEE連接埠資料,存入a            a=buffer;            buffer=Read(0xEE);    //讀取0xEE連接埠資料,存入b
            b=buffer; 編譯器可能會最佳化成:            buffer=Read(0xEE);            a=buffer;             b=buffer;                      //此次最佳化能減少一次裝置訪問     問題:如果0xEE連接埠內容即時更新,此次最佳化將會違背程式的初衷, volatile則用於解決此問題,提示編譯器不要對此變數進行最佳化,從而保證即時性。用法如下:           volatilebuffer=Read(0xEE);     使用場合:volatile用於修飾可能被外界中斷修改的變數,或其他線程修改的變數等。                             1.中斷程式                             2.多線程程式等程式設計中常會使用到volatile。
                    Have a nice day !
           

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.