Namespaces
Variants
Views
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++
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 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
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 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 16
#warning N2686 Yes Yes Yes Yes
Bit-precise integer types (_BitInt) N2763 15
[[noreturn]] N2764 13 15
Suffixes for bit-precise integer constants N2775 15
__has_include in preprocessor conditionals N2799 5 Yes 19.11* Yes 18.0
Identifier Syntax using Unicode Standard Annex 31 N2836 13 15
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
Predefined true and false N2935 13 15
[[unsequenced]] and [[reproducible]] N2956
Relax requirements for variadic parameter list N2975 13 16
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
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

[edit] C99 features

[edit] C99 core language features

C99 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
Universal-character-names in identifiers N/A 3.1 Yes
Increased translation limits N590 0.9 N/A
// comments N644 2.7 Yes
restrict pointers N448 2.95 Yes
Enhanced arithmetic types N815
N601
N620
N638
N657
N694
N809
Yes partial
Flexible array members N/A 3.0 Yes
Variable-length array (VLA) types N683 0.9 Yes
Variably-modified (VM) types N2778 N/A Yes
Designated initializers N494 3.0 Yes
Non-constant initializers N/A 1.21 N/A
Idempotent cvr-qualifiers N505 3.0 N/A
Trailing comma in enumerator-list N/A 0.9 Yes
Hexadecimal floating constants N308 2.8 Yes
Compound literals N716 3.1 Yes
Floating-point environment N/A partial partial
Requiring truncation for divisions of signed integer types N617 0.9 N/A
Implicit return 0; in the main() function N/A Yes Yes
Declarations and statements in mixed order N740 3.0 Yes
init-statement in for loops N/A Yes Yes
inline functions N741 4.3 Yes
Predefined variable __func__ N611 2.95 Yes
Cvr-qualifiers and static in [] within function declarations N/A 3.1 Yes
Variadic macros N707 2.95 Yes
_Pragma preprocessor operator N634 3.0 Yes
Standard pragmas for floating-point evaluation N631
N696
No No Yes Yes
C99 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] See also

C++ documentation for compiler support