The next generation of the C standard.
See: The current IS schedule for C23.
u
/U
-prefixed character constants and string literals may be not UTF-16/32 realloc()
with zero size (the behavior becomes undefined) __alignof_is_defined
and __alignas_is_defined
_Noreturn
function specifier _Noreturn
attribute token asctime()
ctime()
DECIMAL_DIG
<math.h>
(they should be used via <limits.h>
) __bool_true_false_are_defined
_Decimal32
, _Decimal64
, and _Decimal128
) _BitInt(N)
) u8
character constants u8
string literals '
= {}
[[deprecated]]
[[fallthrough]]
[[maybe_unused]]
[[nodiscard]]
[[noreturn]]
_Static_assert
}
nullptr
constant and the associated nullptr_t
type true
and false
become keywords (may be predefined macros for compatibility reasons) STDC
FENV_ROUND
STDC
FENV_DEC_ROUND
__STDC_IEC_60559_BFP__
__STDC_IEC_559__
. __STDC_IEC_60559_DFP__
__STDC_IEC_60559_COMPLEX__
__STDC_IEC_559_COMPLEX__
. dN
variants for existing and new floating-point math functions quantizedN()
samequantumdN()
quantumdN()
llquantexpdN()
encodedecdN()
decodedecdN()
encodebindN()
decodebindN()
char8_t
type alias mbrtoc8()
c8rtomb()
atomic_char8_t
type alias ATOMIC_CHAR8_T_LOCK_FREE
test macro memccpy()
strdup()
strndup()
gmtime_r()
localtime_r()
strftime()
and wcsftime()
fscanf()
and fprintf()
function families wN
and wfN
length modifiers for [u]intN_t
and [u]int_fastN_t
respectively H
, D
, and DD
length modifiers for _Decimal32
, _Decimal64
, and _Decimal128
respectively b
conversion specifier for unsigned integer types timespec_getres()
Defect Reports fixed in C23 (? defects) |
---|
C23 feature | Paper(s) | GCC | Clang | MSVC | Apple Clang | EDG eccp | Intel C++ | IBM XLC++ | Sun/Oracle C++ | Embarcadero C++ Builder | Cray | Nvidia HPC C++ (ex Portland Group/PGI) | Nvidia nvcc | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
_Static_assert with no message | N2265 | 9 | 9 | Yes | ||||||||||
[[nodiscard]] | N2267 | 10 | 9 | Yes | ||||||||||
[[maybe_unused]] | N2270 | 10 | 9 | Yes | ||||||||||
[[deprecated]] | N2334 | 10 | 9 | Yes | ||||||||||
Attributes | N2335 N2554 | 10 | 9 | Yes | ||||||||||
IEEE 754 decimal floating-point types | N2341 | 4.2 (partial)* | 13.0 (partial)* | |||||||||||
[[fallthrough]] | N2408 | 10 | 9 | Yes | ||||||||||
u8 character constants | N2418 | 10 | 15 | |||||||||||
Removal of function definitions without prototype | N2432 | 10 | 15 | |||||||||||
[[nodiscard]] with message | N2448 | 11 | 10 | Yes | ||||||||||
Unnamed parameters in function definitions | N2480 | 11 | 11 | Yes | ||||||||||
Labels before declarations and end of blocks | N2508 | 11 | Partial* | 17.0* | ||||||||||
Binary integer constants | N2549 | 4.3* 11 | 2.9* 9 | 19.0 (2015)** | Yes | 11.0* | ||||||||
__has_c_attribute in preprocessor conditionals | N2553 | 11 | 9 | Yes | ||||||||||
Allow duplicate attributes | N2557 | 11 | 13 | Yes | ||||||||||
IEEE 754 interchange and extended types | N2601 | 7 (partial)* | 6 (partial)* | Partial* | ||||||||||
Digit separators | N2626 | 12 | 13 | 19.0 (2015)** | Yes | 18.0* | ||||||||
#elifdef and #elifndef | N2645 | 12 | 13 | 13.1.6* | ||||||||||
Type change of u8 string literals | N2653 | |||||||||||||
[[maybe_unused]] for labels | N2662 | 11 | ||||||||||||
#warning | N2686 | Yes | Yes | Yes | Yes | Yes | ||||||||
Bit-precise integer types (_BitInt ) | N2763 | 15 | ||||||||||||
[[noreturn]] | N2764 | 15 | ||||||||||||
Suffixes for bit-precise integer constants | N2775 | 15 | ||||||||||||
__has_include in preprocessor conditionals | N2799 | 5 | Yes | 19.11* | Yes | 4.13 | 18.0 | |||||||
Removal of function declarations without prototype | N2841 | 15 | ||||||||||||
Empty initializers | N2900 | Partial* | Partial* | Partial* | Partial* | Partial* | ||||||||
typeof and typeof_unqual | N2927 | Partial* | Partial* | Partial* | Partial* | Partial* | Partial* | |||||||
Predefined true and false | N2935 | |||||||||||||
[[unsequenced]] and [[reproducible]] | N2956 | |||||||||||||
Relax requirements for variadic parameter list | N2975 | |||||||||||||
Type inference in object definitions | N3007 | |||||||||||||
constexpr objects | N3008 | |||||||||||||
nullptr | N3042 | |||||||||||||
C23 feature | Paper(s) | GCC | Clang | MSVC | Apple Clang | EDG eccp | Intel C++ | IBM XLC++ | Sun/Oracle C++ | Embarcadero C++ Builder | Cray | Nvidia HPC C++ (ex Portland Group/PGI) | Nvidia nvcc |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/23