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

將程式碼遷移到 C 11 時我應該注意哪些重大變更?

Susan Sarandon
發布: 2024-12-24 17:19:28
原創
481 人瀏覽過

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

C 11 中的重大更改

C 11 引入了可能影響現有程式碼編譯的重大更改,包括以下內容:

核心語言

  • 在標準函式庫中引入明確運算子 bool(),取代運算子 void*() 的實例。此更改可能會導致先前依賴隱式轉換的程式碼無法編譯。
  • 新關鍵字,包括alignas、alignof、char16_t、constexpr和nullptr,可能與不遵循命名約定的代碼中的現有標識符發生衝突.
  • 整數除法的行為已更改,因為C 11 總是將結果舍入到0,而C 03 允許舍入到結果0 或負無窮大。
  • 隱式宣告的特殊成員函數(例如建構函式或析構函式)現在被定義為已刪除(如果它們的隱式定義格式不正確),這可能會導致程式碼在某些上下文中使用這些函數變得無效。
  • 使用者宣告的析構函數具有隱式異常規範,這表示它們不能拋出異常。依賴析構函數拋出異常的程式碼可能需要修改。
  • 現在允許對具有內部連結的函數進行依賴調用,這可能會改變模板中重載函數的解析。

庫變更

  • 新增至C 標準庫的識別碼C 11 可能與使用同名標頭的程式碼中的現有識別符發生衝突。
  • 交換函數已從 移出。 的標頭標頭。包含 的程式碼可能需要更新以包含 相反。
  • 全域命名空間 posix 現在保留用於標準化。在此命名空間中定義標識符的代碼可能需要修改。
  • 名為 override、final、carrys_dependency 或 noreturn 的巨集在 C 11 中無效。定義這些巨集的程式碼可能需要更新。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板