回覆列表
  • 1 # 使用者9336914310072

    檢視標頭檔案中是否有預定義

    #define __IO volatile /*!

    volatile的作用隨便一搜索都有

    volatile 影響編譯器編譯的結果,指出,volatile 變數是隨時可能發生變化的,與volatile變數有關的運算,不要進行編譯最佳化,以免出錯,(VC++ 在產生release版可執行碼時會進行編譯最佳化,加volatile關鍵字的變數有關的運算,將不進行編譯最佳化。)。

    例如:

    volatile int i=10;

    int j = i;

    ...

    int k = i;

    volatile 告訴編譯器i是隨時可能發生變化的,每次使用它的時候必須從i的地址中讀取,因而編譯器生成的可執行碼會重新從i的地址讀取資料放在k中。

    而最佳化做法是,由於編譯器發現兩次從i讀資料

    的程式碼之間的程式碼沒有對i進行過操作,它會自動把上次讀的資料放在k中。而不是重新從i裡面讀。這樣以來,如果i是一個暫存器變數或者表示一個埠資料就容易出錯,所以說volatile可以保證對特殊地址的穩定訪問,不會出錯。

  • 中秋節和大豐收的關聯?
  • 看演唱會可不可以帶望遠鏡?