Namespaces
Variants
Actions

C compiler support

From cppreference.com
< c

Contents

[edit] C23 features

Note that this list may change, as the draft C23/2x standard evolves.

[edit]C23 core language features

C23 feature

 
Paper(s)

 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
static_assert with no message N22659 9 Yes Yes 6.5 2021.1.2 (clang based)
[[nodiscard]]N226710 9 Yes 6.4 2021.1.2 (clang based)
[[maybe_unused]]N227010 9 Yes 6.4 2021.1.2 (clang based)
[[deprecated]]N233410 9 Yes 6.4 2021.1.2 (clang based)
AttributesN2335
N2554
10 9 Yes 6.4 2021.1.2 (clang based)
IEEE 754 decimal floating-point types N23414.2 (partial)*
12
13.0 (partial)*
[[fallthrough]]N240810 9 Yes 6.4 2021.1.2 (clang based)
u8 character constantsN241810 15 6.5 2022.2
Removal of function definitions without prototype N243210 15 2022.2
[[nodiscard]] with message N244811 10 Yes 6.4 2021.1.2 (clang based)
Unnamed parameters in function definitions N248011 11 Yes 6.4 2021.1.2 (clang based)
Labels before declarations and end of blocks N250811 16 Partial*6.5 17.0*
Binary integer constantsN25494.3*
11
2.9*
9
19.0 (2015)**Yes 6.5 11.0*
__has_c_attribute in preprocessor conditionals N255311 9 Yes 6.5 2021.1.2 (clang based)
Allow duplicate attributes N255711 13 Yes 6.5 2021.4 (clang-based
IEEE 754 interchange and extended types N26017 (partial)*
14
6 (partial)*Partial*
Digit separators N262612 13 19.0 (2015)**Yes 6.5 18.0*
#elifdef and #elifndefN264512 13 19.40*13.1.6*6.5 2021.4
Type change of u8 string literalsN265313
[[maybe_unused]] for labels N266211 16 6.5 2022.2
#warningN2686Yes Yes Yes 6.5 Yes
Bit-precise integer types (_BitInt) N276314 (partial)*15 6.5 2022.2
[[noreturn]]N276413 15 6.5 2022.2
Suffixes for bit-precise integer constants N277514 15 2022.2
__has_include in preprocessor conditionals N27995 Yes 19.11*Yes 6.5 18.0
Identifier Syntax using Unicode Standard Annex 31 N283613 15 6.5 2022.2
Removal of function declarations without prototype N284113 15 2022.2
Empty initializersN2900Partial*
13
Partial*Partial*Partial*Partial*
typeof and typeof_unqualN2927
N2930
Partial*
13
Partial*
16
19.39*Partial*Partial*Partial*Partial*
New spelling of keywords N293413 16 6.5
Predefined true and falseN293513 15 2022.2
[[unsequenced]] and [[reproducible]]N295615
Relax requirements for variadic parameter listN297513 16 6.5 2023.1
Type inference in object definitions N300713 18
#embedN301715 19
constexpr objects N301813 19
Improved Normal Enumerations N302913 20*
Enumerations with fixed underlying types N303013 20*
__VA_OPT__N30338
13
12 19.39*6.5
Storage-class specifiers for compound literals N303813
nullptrN304213 16
 

C23 feature
 

Paper(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

[edit]C23 library features

[edit] C99 features

[edit]C99 core language features

C99 feature

 
Paper(s)

 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
Universal-character-names in identifiers3.1 Yes Yes
Increased translation limitsN5900.9 N/A
//commentsN6442.7 Yes Yes
restrict pointers N4482.95 Yes partial*
Enhanced arithmetic typesN815
N601
N620
N638
N657
N694
N809
Yes partial Maybe
Flexible array members 3.0 Yes Yes
Variable-length array (VLA) types N6830.9 Yes
Variably-modified (VM) types N2778N/AYes
Designated initializers N4943.0 Yes Yes
Non-constant initializers 1.21 N/A
Idempotent cvr-qualifiers N5053.0 N/A
Trailing comma in enumerator-list0.9 Yes Yes
Hexadecimal floating constantsN3082.8 Yes Yes
Compound literalsN7163.1 Yes Yes
Floating-point environment partial partial
Requiring truncation for divisions of signed integer types N6170.9 N/A
Implicit return0; in the main() functionYes Yes Yes
Declarations and statements in mixed order N7403.0 Yes Yes
init-statement in for loops Yes Yes Yes
inline functions N7414.3 Yes Yes
Predefined variable __func__N6112.95 Yes Yes
Cvr-qualifiers and static in [] within function declarations 3.1 Yes
Variadic macrosN7072.95 Yes Yes
_Pragma preprocessor operator N6343.0 Yes partial*
Standard pragmas for floating-point evaluation N631
N696
No No
 

C99 feature
 

Paper(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray


[edit]See also

C++ documentation for compiler support
close