C 編譯器支援
出自 cppreference.com
< c
|
|
本頁面基於「盡力而為」的原則維護,可能落後於最新的編譯器版本。如果您發現內容過時,請協助我們更新! |
目錄 |
[編輯] C23 特性
請注意,隨著 C23/2x 標準草案的演進,此列表可能會有所變動。
[編輯] C23 核心語言特性
| 本節尚不完整 原因:Apple Clang 與其他支援 C2x 的編譯器狀態 |
| C23 特性 |
提案論文 (Papers) |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (原 PGI)* |
Nvidia nvcc |
Cray |
|
|---|---|---|---|---|---|---|---|---|---|---|---|
| 無訊息的 static_assert | N2265 | 9 | 9 | 是 | 是 | 6.5 | 2021.1.2 (基於 clang) | ||||
[[nodiscard]]
|
N2267 | 10 | 9 | 是 | 6.4 | 2021.1.2 (基於 clang) | |||||
[[maybe_unused]]
|
N2270 | 10 | 9 | 是 | 6.4 | 2021.1.2 (基於 clang) | |||||
[[deprecated]]
|
N2334 | 10 | 9 | 是 | 6.4 | 2021.1.2 (基於 clang) | |||||
| 屬性 | N2335 N2554 |
10 | 9 | 是 | 6.4 | 2021.1.2 (基於 clang) | |||||
| IEEE 754 十進位浮點型別 | N2341 | 4.2 (部分)* 12 |
13.0 (部分)* | ||||||||
[[fallthrough]]
|
N2408 | 10 | 9 | 是 | 6.4 | 2021.1.2 (基於 clang) | |||||
u8 字元常數
|
N2418 | 10 | 15 | 6.5 | 2022.2 | ||||||
| 移除無原型的函式定義 | N2432 | 10 | 15 | 2022.2 | |||||||
帶訊息的 [[nodiscard]] |
N2448 | 11 | 10 | 是 | 6.4 | 2021.1.2 (基於 clang) | |||||
| 函式定義中的未命名參數 | N2480 | 11 | 11 | 是 | 6.4 | 2021.1.2 (基於 clang) | |||||
| 宣告與區塊結尾前的標籤 | N2508 | 11 | 16 | 部分* | 6.5 | 17.0* | |||||
| 二進位整數常數 | N2549 | 4.3* 11 |
2.9* 9 |
19.0 (2015)** | 是 | 6.5 | 11.0* | ||||
| 前置處理器條件中的 __has_c_attribute | N2553 | 11 | 9 | 是 | 6.5 | 2021.1.2 (基於 clang) | |||||
| 允許重複屬性 | N2557 | 11 | 13 | 是 | 6.5 | 2021.4 (基於 clang) | |||||
| IEEE 754 交換與擴充型別 | N2601 | 7 (部分)* 14 |
6 (部分)* | 部分* | |||||||
| 數字分隔符 | N2626 | 12 | 13 | 19.0 (2015)** | 是 | 6.5 | 18.0* | ||||
#elifdef 與 #elifndef
|
N2645 | 12 | 13 | 19.40* | 13.1.6* | 6.5 | 2021.4 | ||||
u8 字串實字的型別變更 |
N2653 | 13 | |||||||||
用於標籤的 [[maybe_unused]] |
N2662 | 11 | 16 | 6.5 | 2022.2 | ||||||
| #warning | N2686 | 是 | 是 | 是 | 6.5 | 是 | |||||
| 位元精確整數型別 (_BitInt) | N2763 | 14 (部分)* | 15 | 6.5 | 2022.2 | ||||||
[[noreturn]]
|
N2764 | 13 | 15 | 6.5 | 2022.2 | ||||||
| 位元精確整數常數的字尾 | N2775 | 14 | 15 | 2022.2 | |||||||
| 前置處理器條件中的 __has_include | N2799 | 5 | 是 | 19.11* | 是 | 6.5 | 18.0 | ||||
| 使用 Unicode 標準附件 31 的識別碼語法 | N2836 | 13 | 15 | 6.5 | 2022.2 | ||||||
| 移除無原型的函式宣告 | N2841 | 13 | 15 | 2022.2 | |||||||
| 空初始設定式 | N2900 | 部分* 13 |
部分* | 部分* | 部分* | 部分* | |||||
| typeof 與 typeof_unqual | N2927 N2930 |
部分* 13 |
部分* 16 |
19.39* | 部分* | 部分* | 部分* | 部分* | |||
| 關鍵字的新拼寫 | N2934 | 13 | 16 | 6.5 | |||||||
| 預定義的 true 與 false | N2935 | 13 | 15 | 2022.2 | |||||||
[[unsequenced]] 與 [[reproducible]] |
N2956 | 15 | |||||||||
| 放寬可變參數列表的要求 | N2975 | 13 | 16 | 6.5 | 2023.1 | ||||||
| 物件定義中的型別推導 | N3007 | 13 | 18 | ||||||||
| #embed | N3017 | 15 | 19 | ||||||||
| constexpr 物件 | N3018 | 13 | 19 | ||||||||
| 改進的普通列舉 | N3029 | 13 | 20* | ||||||||
| 具有固定底層型別的列舉 | N3030 | 13 | 20* | ||||||||
__VA_OPT__
|
N3033 | 8 13 |
12 | 19.39* | 6.5 | ||||||
| 複合實字的儲存類別指定符 | N3038 | 13 | |||||||||
| nullptr | N3042 | 13 | 16 | ||||||||
| C23 特性 |
提案論文 (Papers) |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (原 PGI)* |
Nvidia nvcc |
Cray |
[編輯] C23 函式庫特性
| 本節尚不完整 原因:C 標準函式庫的獨立列表 |
[編輯] C99 特性
[編輯] C99 核心語言特性
| 本節尚不完整 原因:需要列出 C 編譯器、驗證 |
| C99 特性 |
提案論文 (Papers) |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (原 PGI)* |
Nvidia nvcc |
Cray |
|
|---|---|---|---|---|---|---|---|---|---|---|---|
| 識別碼中的通用字元名稱 (Universal-character-names) | 3.1 | 是 | 是 | ||||||||
| 增加的翻譯限制 | N590 | 0.9 | 不適用 (N/A) | ||||||||
| // 註解 | N644 | 2.7 | 是 | 是 | |||||||
| restrict 指標 | N448 | 2.95 | 是 | 部分* | |||||||
| 增強的算術類型 | N815 N601 N620 N638 N657 N694 N809 |
是 | 部分 | 可能 | |||||||
| 彈性陣列成員 (Flexible array members) | 3.0 | 是 | 是 | ||||||||
| 變長陣列 (VLA) 類型 | N683 | 0.9 | 是 | ||||||||
| 可變修飾 (VM) 類型 | N2778 | 不適用 (N/A) | 是 | ||||||||
| 指派初始化器 (Designated initializers) | N494 | 3.0 | 是 | 是 | |||||||
| 非常數初始化式 | 1.21 | 不適用 (N/A) | |||||||||
| 等冪 cvr-限定符 | N505 | 3.0 | 不適用 (N/A) | ||||||||
| 枚舉列表中的尾隨逗號 | 0.9 | 是 | 是 | ||||||||
| 十六進位浮點常數 | N308 | 2.8 | 是 | 是 | |||||||
| 複合字面量 (Compound literals) | N716 | 3.1 | 是 | 是 | |||||||
| 浮點環境 | 部分 | 部分 | |||||||||
| 有號整數類型除法要求截斷 | N617 | 0.9 | 不適用 (N/A) | ||||||||
main() 函式中的隱式 return 0; |
是 | 是 | 是 | ||||||||
| 宣告與語句混合排序 | N740 | 3.0 | 是 | 是 | |||||||
| for 迴圈中的 初始化語句 | 是 | 是 | 是 | ||||||||
| inline 函式 | N741 | 4.3 | 是 | 是 | |||||||
| 預定義變數 __func__ | N611 | 2.95 | 是 | 是 | |||||||
| 函式宣告中 [] 內的 Cvr-限定符與 static | 3.1 | 是 | |||||||||
| 可變參數巨集 (Variadic macros) | N707 | 2.95 | 是 | 是 | |||||||
| _Pragma 前處理器運算子 | N634 | 3.0 | 是 | 部分* | |||||||
| 浮點求值標準 pragma | N631 N696 |
否 | 否 | ||||||||
| C99 特性 |
提案論文 (Papers) |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (原 PGI)* |
Nvidia nvcc |
Cray |
[編輯] 參見
| C++ 文件關於 編譯器支援
|