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中文網其他相關文章!