C23 Features Supported by Intel® Compiler

ID 767374
Updated 11/17/2023
Version Latest



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 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 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 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