首頁 >後端開發 >C++ >遷移到 C 11 時我應該注意哪些重大變化?

遷移到 C 11 時我應該注意哪些重大變化?

Susan Sarandon
Susan Sarandon原創
2024-12-23 16:41:16712瀏覽

What Breaking Changes Should I Be Aware of When Migrating to C  11?

C 11 中引入了哪些重大變更?

C 11 中引入的重大變更之一是明確運算子 bool()標準函式庫,取代運算子 void*() 的實例。雖然此變更應該解決無效程式碼,但還需要考慮其他潛在的重大變更。

核心語言不相容性

  • 修改的字串文字解釋: 像「u8」這樣的預定義宏可能會修改字串文字。
  • 使用者定義的字串文字: 字串文字中的「_x」現在會建立使用者定義的字串文字,而不是擴充巨集。
  • 新關鍵字: 引入「constexpr」和「thread_local」等關鍵字可能會破壞現有識別碼
  • 整數文字修改:超過“long”範圍的整數文字現在可能會變成“long long”。
  • 整數除法修改: C 03 整數除法舍入行為可能與C 11 的捨入行為不同0.
  • 「auto」作為儲存說明符:使用「auto」作為儲存說明符的C 03 程式碼可能會無效。
  • 縮小轉換: C 03 縮小轉換(例如,double 到 int)現在可以是無效。
  • 隱式特殊成員函數刪除: 格式錯誤的隱式定義成員函數將自動刪除。
  • 析構函數異常規範: 使用者-宣告的析構函式現在有隱式noexcept(true)
  • 「匯出」宣告消除:使用「匯出」的C 03 聲明現在無效。
  • 模板關閉修改:“> >” in 模板現在可以關閉兩個模板,而不是僅被視為移位運算符。
  • 內部連結函數的依賴呼叫: 現在允許內部連結函數的依賴呼叫。

圖書館修改

  • 命名空間標識符:添加到標準庫的識別碼可能會破壞現有代碼。
  • 標頭包括:先前的標頭位於某些標準標頭中(例如,
  • 「posix」命名空間:「posix」命名空間現在保留用於將來的標準化。
  • 巨集定義: 將「override」 、「final」、「carries_dependency」或「noreturn」定義為巨集現在可能無效。

以上是遷移到 C 11 時我應該注意哪些重大變化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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