首頁 >後端開發 >C++ >C 11 引入了哪些重大變化?

C 11 引入了哪些重大變化?

Patricia Arquette
Patricia Arquette原創
2024-12-11 14:43:10930瀏覽

What Breaking Changes Did C  11 Introduce?

C 11 中引入的重大更改

C 11 引入了幾項重大更改,這些更改可能導致以前有效的程式碼在編譯期間失敗。一個顯著的變化是在標準函式庫中引入了明確運算子 bool(),取代了運算子 void*() 的實例。雖然此變更主要影響依賴隱式轉換的無效程式碼,但它仍然構成重大變更。

核心語言更改

  • 關鍵字alignas、alignof、char16_t 、 char32_t、constexpr、decltype、noexcept、nullptr、thic_calt 和 引入了。
  • 大於 long 的整數文字現在可以被視為有符號 long long,而不是無符號整數。
  • 除法現在總是向 0 舍入,與 C 2003 不同,C 2003 可能向負無窮舍入在某些情況下。
  • auto 關鍵字不能再用作儲存類別說明符,因為它是為新的儲存類別保留的功能。
  • 縮小轉換範圍會導致不相容。例如,將 double 指派給 int 現在是無效的。
  • 當明確定義格式不正確時,隱式特殊成員函數將被定義為已刪除,從而導致先前有效的程式碼出現錯誤。
  • 使用者宣告的析構函式有隱式異常規範(noexcept(true)),它可以在catch區塊中觸發不同的行為。
  • export關鍵字不再是在 C 11 中有效。
  • 運算子>>現在可用於關閉兩個模板,可能會影響使用序列 >> 的程式碼作為移位運算子。
  • 現在允許具有內部連結的函數的依賴呼叫。

庫變更

  • 標準庫C 11 中引入的識別碼可能與使用者定義的識別符衝突。
  • 標頭包含引用 C 11 標準函式庫中的新頭檔可能無法編譯。
  • 交換函數已從 移至
  • posix 全域命名空間現已保留。
  • 宏 override、final、carrys_dependency 和 noreturn 不再有效。

以上是C 11 引入了哪些重大變化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn