Namespaces
Variants
Views
Actions

C23

From cppreference.com
< c

The next generation of the C standard.

See: The current WD of C23.

Contents

[edit] Obsolete

[edit] Removed

[edit] Deprecated

[edit] New language features

[edit] Feature test macros for optional features

[edit] New library features

[edit] New headers

  • <stdbit.h>
  • <stdckdint.h>

[edit] Library features

[edit] Defect reports

Defect Reports fixed in C23 (? defects)

[edit] Compiler support

[edit] C23 core language features


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 6.5
[[nodiscard]] N2267 10 9 Yes 6.4
[[maybe_unused]] N2270 10 9 Yes 6.4
[[deprecated]] N2334 10 9 Yes 6.4
Attributes N2335
N2554
10 9 Yes 6.4
IEEE 754 decimal floating-point types N2341 4.2 (partial)* 13.0 (partial)*
[[fallthrough]] N2408 10 9 Yes 6.4
u8 character constants N2418 10 15 6.5
Removal of function definitions without prototype N2432 10 15
[[nodiscard]] with message N2448 11 10 Yes 6.4
Unnamed parameters in function definitions N2480 11 11 Yes 6.4
Labels before declarations and end of blocks N2508 11 16 Partial* 17.0*
Binary integer constants N2549 4.3*
11
2.9*
9
19.0 (2015)** Yes 6.5 11.0*
__has_c_attribute in preprocessor conditionals N2553 11 9 Yes 6.5
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 6.5 18.0*
#elifdef and #elifndef N2645 12 13

13.1.6*

6.5
Type change of u8 string literals N2653
[[maybe_unused]] for labels N2662 11 16 6.5
#warning N2686 Yes Yes Yes 6.5 Yes
Bit-precise integer types (_BitInt) N2763 15
[[noreturn]] N2764 13 15 6.5
Suffixes for bit-precise integer constants N2775 15
__has_include in preprocessor conditionals N2799 5 Yes 19.11* Yes 6.5 18.0
Identifier Syntax using Unicode Standard Annex 31 N2836 13 15 6.5
Removal of function declarations without prototype N2841 13 15


Empty initializers N2900 Partial* Partial* Partial* Partial* Partial*


typeof and typeof_unqual N2927
N2930
Partial*
13
Partial*
16
Partial* Partial* Partial* Partial*
New spelling of keywords N2934 13 16 6.5
Predefined true and false N2935 13 15
[[unsequenced]] and [[reproducible]] N2956
Relax requirements for variadic parameter list N2975 13 16 6.5
Type inference in object definitions N3007 13
#embed N3017
constexpr objects N3018 13
Improved Normal Enumerations N3029 13
Enhancements to Enumerations N3030 13 Maybe
__VA_OPT__ N3033 8 12 6.5
Storage-class specifiers for compound literals N3038 13
nullptr N3042 13 16
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

[edit] C23 library features