#pragma warning()

來源:互聯網
上載者:User
  • #pragma 支援 
    開發人員可以使用 #pragma 指令將警告作為錯誤處理;還可以啟用或禁用警告,如下面的樣本所示:
    #pragma warning (error: 6260) 
    #pragma warning (disable: 6011) 
    #pragma warning (enable: 6056)
  • 使用VS2005,編譯提示"xxxxxx被聲明為否決的 
    這是MS新的C庫提供的帶有檢查的函數,有記憶體溢出檢測。可以防止一部分程式bug, 抵制緩衝區溢位攻擊(buffer overflow attack). 但是應該速度上有犧牲。 解決辦法 
    1.所以在你確信安全的情況下,可以用#pragma warning(disable: 4996)消除這個警告 
    2.建議使用_s的緩衝區安全的版本,而不是簡單的屏蔽警告。 
  • #pragma warning (disable: 4996) // 太多警告看著厭煩無視之 
  • 關於#pragma warning
    1.#pragma warning只對當前檔案有效(對於.h,對包含它的cpp也是有效),而不是是對整個工程的所有檔案有效。當該檔案編譯結束,設定也就失去作用。
    2.#pragma warning(push) 儲存當前警示設定。
       #pragma warning(push, n) 儲存當前警示設定,並設定警示層級為n。n為從1到4的自然數。
    3.#pragma warning(pop)恢複之前壓入堆棧的警示設定。在一對push和pop之間作的任何警示相關設定都將失效。
    4.#pragma warning(disable: n)  將某個警報置為失效
    5.#pragma warning(default: n)  將警示置為預設
    6.某些警告如C4309是從上到下生效的。即檔案內#pragma warning從上到下遍曆,依次生效。
     
    例如:
    void func()
    {
          #pragma warning(disable: 4189)
          char s;
          s = 128;
          #pragma warning(default: 4189)
          char c;
          c = 128;
    }
    7.某些警告例如C4189是以函數中最後出現的#pragma warning設定為準的,其餘針對該警示的設定都是無效的。
    例如:
    void func()
    {
          #pragma warning(disable: 4189)
          int x = 1;
          #pragma warning(default: 4189)
    }
    則C4189仍然會出現,因為default指令是函數的最後一條。在該檔案內的其他函數中,如果沒有重新設定,C4189也是以#pragma warning(default: 4189)為準。如果重新設定,同樣是按照其函數中的最後一個#pragma warning為準。

    8.某些警告(MSDN認為是大於等於C4700的警告)是在函數結束後才會生效。
    例如:
    #pragma warning(disable:4700)
    void Func() 
    {
    int x;
    int y = x;   
              #pragma warning(default:4700)   
               int z= x;
    }
    則y = x和z = x都不會產生C4700警示。只有在函數結束後的後的另外一個函數中,#pragma warning(default:4700)才會生效

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.