C 17 中引入了哪些主要新功能和增強功能?
C 17 有哪些新功能?
C 17 引入了一系列新功能和語言改進,包括:
-
語言特點:
- 類別模板的模板參數推導
- template
表示任何非類型模板參數類型的值 - 修復非類型模板參數
- 支援模板模板
- 擴展折疊和...表達式
- auto x{8} 作為整數
- 現代化使用with ...和列表
- Constexpr lambdas
- 在lambdas 中捕獲此
- 屬性,例如[[fallthrough]]、[[nodiscard]]、[[maybe_unused]]
- 命名空間和枚舉器上的屬性
- 使用避免重複屬性命名空間
- 要求編譯器忽略它們無法識別的非標準屬性
- 內聯變數
- 命名空間別名(例如命名空間A::B)
- 簡單的static_assert(表達式);沒有字串
- 消除no throw 並將其替換為throw() 和noexcept(true)
-
更乾淨的多重返回和流程控制:
- 簡化多重回傳的結構化綁定value
- if (init; condition) 和switch (init; condition) 用來擴展if 和switch 語句
- 為哨兵和自訂迭代器泛化基於範圍的for 迴圈
- if constexpr用於幾乎泛型程式碼
-
Misc:
- 十六進位浮點文字
- 十六進位浮點文字
- 過度對齊的動態記憶體分配資料
- 保證副本elision
- 修復表達式的求值順序
- 枚舉的直接列表初始化
- 前向進度保證(FPG)
- 字元文字u8'U ', u8'T', u8'F', u8'8'
- 模式系統中的 noexcept
- __has_include用於測試頭檔包含錯誤
- 指針轉換數組修復
- 繼承構造函數的修復並通過繼承進行聚合初始化
std類型的實用函數雙關語 -
- 庫新增:
-
- std::標記的變體聯合類型
- 對於可為空的值,std::可選
- std::any 對於任何類型的值
- std::string_view 作為字元陣列或子字串的引用
- std::byte既不是整數也不是字符,而只是資料
-
呼叫內容:
- std::invoke 用於泛型函數呼叫
- std::apply 用於將元組解包為函數呼叫
- std::make_from_tuple 和std:: apply 用於物件建構
- 函數呼叫的is_invocable、is_invocable_r 和invoke_result功能
- 檔案系統TS v1:改良的檔案系統操作
- 新演算法:
- 線程: std::shared_mutex、atomic
::is_always_lockfree 和scoped_lock 演算法及相關的平行版本機械::is_always_lockfree 和scoped_lock 並行性TS v1: - 庫基礎TS v1:搜尋演算法、多態分配器(pmr)、取樣
- 容器改良: try_emplace 和insert_or_assign、映射的拼接和集合,非常量.data()用於字串,非成員std::size、std::empty、std::data、容器中最小不完整的類型支援、連續迭代器「概念」、constexpr 迭代器、emplace 函數系列的更新建構子
- 智慧型指標變更: 修正了unique_ptr 並調整了weak_from_this和共享自這個
- 其他std 資料類型改進: 使用大括號構造std::tuple,可輕鬆複製的引用_包裝器
- 其他:
-
C 17 函式庫是基於C11的C99
保留給未來標準庫 std[0-9]- destroy、uninitialized_move、uninitialized_value_construct 和 uninitialized_default_construct等實用函數
- 特殊數學函數
- std::clamp()
- GCD 和LCM 計算
- 用於在析構函數中拋出的std::uncaught_exceptions
- std::as_const 和std: :布林常數類型
- std::void_t
;和std::void_t ;類型 - std::owner_less
;用於根據內容排序的智能指針 - 對std::chrono
- std::conjunction、std::disjunction、std::negation 的改良
- std::not_fn
- noexcept內的規則std
- std::is_contigious_layout
- 使用 std::to_chars進行高效能數位轉換與std::from_chars
-
-
特徵:
- 交換, is_aggregate, has_unique_object_representations
以上是C 17 中引入了哪些主要新功能和增強功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

C#和C 的歷史與演變各有特色,未來前景也不同。 1.C 由BjarneStroustrup在1983年發明,旨在將面向對象編程引入C語言,其演變歷程包括多次標準化,如C 11引入auto關鍵字和lambda表達式,C 20引入概念和協程,未來將專注於性能和系統級編程。 2.C#由微軟在2000年發布,結合C 和Java的優點,其演變注重簡潔性和生產力,如C#2.0引入泛型,C#5.0引入異步編程,未來將專注於開發者的生產力和雲計算。

C#和C 的学习曲线和开发者体验有显著差异。1)C#的学习曲线较平缓,适合快速开发和企业级应用。2)C 的学习曲线较陡峭,适用于高性能和低级控制的场景。

靜態分析在C 中的應用主要包括發現內存管理問題、檢查代碼邏輯錯誤和提高代碼安全性。 1)靜態分析可以識別內存洩漏、雙重釋放和未初始化指針等問題。 2)它能檢測未使用變量、死代碼和邏輯矛盾。 3)靜態分析工具如Coverity能發現緩衝區溢出、整數溢出和不安全API調用,提升代碼安全性。

C 通過第三方庫(如TinyXML、Pugixml、Xerces-C )與XML交互。 1)使用庫解析XML文件,將其轉換為C 可處理的數據結構。 2)生成XML時,將C 數據結構轉換為XML格式。 3)在實際應用中,XML常用於配置文件和數據交換,提升開發效率。

使用C 中的chrono庫可以讓你更加精確地控制時間和時間間隔,讓我們來探討一下這個庫的魅力所在吧。 C 的chrono庫是標準庫的一部分,它提供了一種現代化的方式來處理時間和時間間隔。對於那些曾經飽受time.h和ctime折磨的程序員來說,chrono無疑是一個福音。它不僅提高了代碼的可讀性和可維護性,還提供了更高的精度和靈活性。讓我們從基礎開始,chrono庫主要包括以下幾個關鍵組件:std::chrono::system_clock:表示系統時鐘,用於獲取當前時間。 std::chron

C 的未來將專注於並行計算、安全性、模塊化和AI/機器學習領域:1)並行計算將通過協程等特性得到增強;2)安全性將通過更嚴格的類型檢查和內存管理機制提升;3)模塊化將簡化代碼組織和編譯;4)AI和機器學習將促使C 適應新需求,如數值計算和GPU編程支持。

1)c relevantduetoItsAverity and效率和效果臨界。 2)theLanguageIsconTinuellyUped,withc 20introducingFeaturesFeaturesLikeTuresLikeSlikeModeLeslikeMeSandIntIneStoImproutiMimproutimprouteverusabilityandperformance.3)

DMA在C 中是指DirectMemoryAccess,直接內存訪問技術,允許硬件設備直接與內存進行數據傳輸,不需要CPU干預。 1)DMA操作高度依賴於硬件設備和驅動程序,實現方式因係統而異。 2)直接訪問內存可能帶來安全風險,需確保代碼的正確性和安全性。 3)DMA可提高性能,但使用不當可能導致系統性能下降。通過實踐和學習,可以掌握DMA的使用技巧,在高速數據傳輸和實時信號處理等場景中發揮其最大效能。
