C23 Features
Following is the status and version of compiler support for C23 Features:
| Language Feature | Standard # | ICX 2023.2 (oneAPI 2023.2) | ICX 2024.0 (oneAPI 2024.0) | |
|---|---|---|---|---|
| Harmonizing static_assert with C++ | N2665 | Yes | Yes | |
| nodiscard attribute | N2267 | Yes | Yes | |
| maybe_unused attribute | N2270 | Yes | Yes | |
| TS 18661 Integration: Remove conditional “WANT” macros from numbered clauses | N2359 | No | No | |
| Preprocessor line numbers unspecified | N2322 | Partial | Partial | |
| deprecated attribute | N2334 | Yes | Yes | |
| Attribute: Adding attribute | N2335 | Yes | Yes | |
| Attribite: Minor attribute wording cleanups | N2554 | Yes | Yes | |
| Defining new types in offsetof | N2350 | Yes | Yes | |
| fallthrough attribute | N2408 | Yes | Yes | |
| Two's complement sign representation | N2412 | Yes | Yes | |
| Adding the u8 character prefix | N2418 | Yes | Yes | |
| Remove support for function definitions with identifier lists | N2432 | Yes | Yes | |
| [[nodiscard("should have a reason")]] | N2448 | Yes | Yes | |
| Allowing unnamed parameters in function definitions | N2480 | Yes | Yes | |
| Free positioning of labels inside compound statements | N2508 | Yes | Yes | |
| Clarification request for C17 example of undefined behavior | N2517 | No | No | |
| Querying attribute support | N2553 | Yes | Yes | |
| Binary literals | N2549 | Yes | Yes | |
| Allow duplicate attributes | N2557 | Yes | Yes | |
| Character encoding of diagnostic text | N2563 | Yes | Yes | |
| What we think we reserve | N2572 | Partial | Partial | |
| Remove mixed wide string literal concatenation | N2594 | Yes | Yes | |
| Compatibility of Pointers to Arrays with Qualifiers | N2607 | Partial | Partial | |
| Unclear type relationship between a format specifier and its argument | N2562 | Yes | Yes | |
| String functions for freestanding implementations | N2524 | No | No | |
| Digit separators | N2626 | Yes | Yes | |
| Missing +(x) in table | N2641 | Yes | Yes | |
| Add support for preprocessing directives elifdef and elifndef | N2645 | Yes | Yes | |
| [[maybe_unused]] for labels | N2662 | Yes | Yes | |
| Zeros compare equal | N2670 | Yes | Yes | |
| Negative values | N2671 | Yes | Yes | |
| 5.2.4.2.2 cleanup | N2672 | Yes | Yes | |
| Adding Fundamental Type for N-bit Integers | N2763 | Yes | Yes | |
| Adding Fundamental Type for N-bit Integers: Literal suffixes for bit-precise integers | N2775 | Yes | Yes | |
| Adding Fundamental Type for N-bit Integers: bit-precise bit-fields | N2969 | Yes | Yes | |
| #warning directive | N2686 | Yes | Yes | |
| Sterile characters | N2686 | Yes | Yes | |
| Integer constant expressions | N2713 | No | No | |
| Numerically equal | N2716 | Yes | Yes | |
| __has_include for C | N2799 | Yes | Yes | |
| Annex F overflow and underflow | N2747 | Yes | Yes | |
| Remove UB from Incomplete Types in Function Parameters | N2770 | Yes | Yes | |
| Variably-modified types | N2778 | Yes | Yes | |
| Types do not have types | N2781 | Yes | Yes | |
| 5.2.4.2.2 cleanup (N2672 update) | N2806 | Yes | Yes | |
| Allow 16-bit ptrdiff_t | N2808 | Yes | Yes | |
| Clarifying integer terms | N2837 | Yes | Yes | |
| Require exact-width integer type interfaces | N2872 | Yes | Yes | |
| @, $, and ‘ in the source/execution character set | N2701 | Yes | Yes | |
| The noreturn attribute | N2764 | Yes | Yes | |
| *_HAS_SUBNORM==0 implies what? | N2797 | Yes | Yes | |
| Add annotations for unreachable control flow v2 | N2826 | Yes | Yes | |
| Unicode Sequences More Than 21 Bits are a Constraint Violation r0 | N2828 | Yes | Yes | |
| Make assert() macro user friendly for C and C++ v2 | N2829 | No | No | |
| Identifier Syntax using Unicode Standard Annex 31 | N2836 | Yes | Yes | |
| No function declarators without prototypes | N2841 | Yes | Yes | |
| Revised Suggestions of Change for Numerically Equal/Equivalent | N2847 | Yes | Yes | |
| 5.2.4.2.2 Cleanup, Again Again (N2806 update) | N2879 | Yes | Yes | |
| char8_t: A type for UTF-8 characters and strings | N2653 | No | No | |
| Consistent, Warningless, and Intuitive Initialization with {} | N2900 | No | Yes | |
| Compound Literals with Empty Initializers | N3011 | No | Yes | |
| Not-so-magic - typeof for C | N2927 | Yes | Yes | |
| Consider renaming remove_quals | N2930 | Yes | Yes | |
| Revice spelling of keywords v7 | N2934 | Yes | Yes | |
| Make false and true first-class language features v8 | N2935 | Yes | Yes | |
| Properly define blocks as part of the grammar v3 | N2937 | Yes | Yes | |
| Annex X (replacing Annex H) for IEC 60559 interchange | N2601 | No | No | |
| Indeterminate Values and Trap Representations | N2861 | Yes | Yes | |
| Remove ATOMIC_VAR_INIT v2 | N2886 | Yes | Yes | |
| Require exact-width integer type interfaces v2 | N2888 | Yes | Yes | |
| Wording Change for Variably-Modified Types | N2992 | Yes | Yes | |
| Remove trigraphs??! | N2940 | Yes | Yes | |
| Relax requirements for variadic parameter lists, V3 | N2975 | Yes | Yes | |
| Unsequenced functions | N2956 | No | No | |
| Type inference for object declarations | N3007 | No | No | |
| constexpr for object definitions | N3018 | No | No | |
| Introduce storage class specifiers for compound literals | N3038 | No | No | |
| Identifier primary expressions | N3034 | Yes | Yes | |
| Introduce the nullptr constant | N3042 | Partial | Yes | |
| Memory layout of unions | N2929 | Yes | Yes | |
| Improved tag compatibility | N3037 | No | No | |
| #embed | N3017 | No | No |