C compiler support
From cppreference.net
<
c
|
|
Cette page est maintenue au mieux de nos capacités et peut ne pas refléter les dernières versions des compilateurs. Si vous constatez des informations obsolètes, aidez-nous en les mettant à jour ! |
Table des matières |
Fonctionnalités C23
Notez que cette liste peut changer, au fur et à mesure que l'ébauche de la norme C23/2x évolue.
Fonctionnalités principales du langage C23
|
Cette section est incomplète
Motif : statut pour Apple Clang et autres compilateurs prenant en charge C2x |
|
Fonctionnalité C23
|
Document(s)
|
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
| static_assert sans message | N2265 | 9 | 9 | Oui | Oui | 6.5 | 2021.1.2 (clang based) | ||||
[[
nodiscard
]]
|
N2267 | 10 | 9 | Oui | 6.4 | 2021.1.2 (clang based) | |||||
[[
maybe_unused
]]
|
N2270 | 10 | 9 | Oui | 6.4 | 2021.1.2 (clang based) | |||||
[[
deprecated
]]
|
N2334 | 10 | 9 | Oui | 6.4 | 2021.1.2 (clang based) | |||||
| Attributs |
N2335
N2554 |
10 | 9 | Oui | 6.4 | 2021.1.2 (clang based) | |||||
| Types de virgule flottante décimale IEEE 754 | N2341 |
4.2
(partiel)*
12 |
13.0 (partiel)* | ||||||||
[[
fallthrough
]]
|
N2408 | 10 | 9 | Oui | 6.4 | 2021.1.2 (clang based) | |||||
u8
constantes de caractère
|
N2418 | 10 | 15 | 6.5 | 2022.2 | ||||||
| Suppression des définitions de fonction sans prototype | N2432 | 10 | 15 | 2022.2 | |||||||
[[
nodiscard
]]
avec message
|
N2448 | 11 | 10 | Oui | 6.4 | 2021.1.2 (clang based) | |||||
| Paramètres sans nom dans les définitions de fonction | N2480 | 11 | 11 | Oui | 6.4 | 2021.1.2 (clang based) | |||||
| Étiquettes avant les déclarations et fin des blocs | N2508 | 11 | 16 | Partiel* | 6.5 | 17.0 * | |||||
| Constantes entières binaires | N2549 |
4.3
*
11 |
2.9
*
9 |
19.0 (2015)* * | Oui | 6.5 | 11.0 * | ||||
| __has_c_attribute dans les conditionnelles du préprocesseur | N2553 | 11 | 9 | Oui | 6.5 | 2021.1.2 (clang based) | |||||
| Autoriser les attributs en double | N2557 | 11 | 13 | Oui | 6.5 | 2021.4 (clang-based | |||||
| Types d'échange et étendus IEEE 754 | N2601 |
7
(partiel)*
14 |
6 (partiel)* | Partiel* | |||||||
| Séparateurs de chiffres | N2626 | 12 | 13 | 19.0 (2015)* * | Oui | 6.5 | 18.0 * | ||||
#elifdef
et
#elifndef
|
N2645 | 12 | 13 | 19.40* | 13.1.6* | 6.5 | 2021.4 | ||||
Changement de type des
u8
littéraux de chaîne
|
N2653 | 13 | |||||||||
[[
maybe_unused
]]
pour les étiquettes
|
N2662 | 11 | 16 | 6.5 | 2022.2 | ||||||
| #warning | N2686 | Oui | Oui | Oui | 6.5 | Oui | |||||
| Types entiers à précision de bits ( _BitInt ) | N2763 | 14 (partiel)* | 15 | 6.5 | 2022.2 | ||||||
[[
noreturn
]]
|
N2764 | 13 | 15 | 6.5 | 2022.2 | ||||||
| Suffixes pour les constantes entières à précision de bits | N2775 | 14 | 15 | 2022.2 | |||||||
| __has_include dans les conditionnelles du préprocesseur | N2799 | 5 | Oui | 19.11* | Oui | 6.5 | 18.0 | ||||
| Syntaxe des identifiants utilisant la norme Unicode Annexe 31 | N2836 | 13 | 15 | 6.5 | 2022.2 | ||||||
| Suppression des déclarations de fonction sans prototype | N2841 | 13 | 15 | 2022.2 | |||||||
| Initialiseurs vides | N2900 |
Partiel*
13 |
Partiel* | Partiel* | Partiel* | Partiel* | |||||
| typeof et typeof_unqual |
N2927
N2930 |
Partiel*
13 |
Partiel*
16 |
19.39* | Partiel* | Partiel* | Partiel* | Partiel* | |||
| Nouvelle orthographe des mots-clés | N2934 | 13 | 16 | 6.5 | |||||||
| Prédéfinis true et false | N2935 | 13 | 15 | 2022.2 | |||||||
[[
unsequenced
]]
et
[[
reproducible
]]
|
N2956 | 15 | |||||||||
| Assouplir les exigences pour la liste de paramètres variadiques | N2975 | 13 | 16 | 6.5 | 2023.1 | ||||||
| Inférence de type dans les définitions d'objets | N3007 | 13 | 18 | ||||||||
| #embed | N3017 | 15 | 19 | ||||||||
| constexpr objets | N3018 | 13 | 19 | ||||||||
| Énumérations normales améliorées | N3029 | 13 | 20 * | ||||||||
| Énumérations avec types sous-jacents fixes | N3030 | 13 | 20 * | ||||||||
__VA_OPT__
|
N3033 |
8
13 |
12 | 19.39* | 6.5 | ||||||
| Spécificateurs de classe de stockage pour les littéraux composés | N3038 | 13 | |||||||||
| nullptr | N3042 | 13 | 16 | ||||||||
|
Fonctionnalité C23 |
Document(s) |
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
Fonctionnalités de la bibliothèque C23
|
Cette section est incomplète
Motif : une liste différente pour les bibliothèques standard C |
Fonctionnalités C99
Fonctionnalités fondamentales du langage C99
|
Cette section est incomplète
Raison : doit lister les compilateurs C, vérification |
|
Fonctionnalité C99
|
Document(s)
|
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
| Noms de caractères universels dans les identifiants | 3.1 | Oui | Oui | ||||||||
| Limites de traduction augmentées | N590 | 0.9 | N/A | ||||||||
| // commentaires | N644 | 2.7 | Oui | Oui | |||||||
| restrict pointeurs | N448 | 2.95 | Oui | partiel * | |||||||
| Types arithmétiques améliorés |
N815
N601 N620 N638 N657 N694 N809 |
Oui | partiel | Peut-être | |||||||
| Membres de tableau flexible | 3.0 | Oui | Oui | ||||||||
| Tableau de longueur variable (VLA) types | N683 | 0.9 | Oui | ||||||||
| Types à modification variable (VM) | N2778 | N/A | Oui | ||||||||
| Initialisateurs désignés | N494 | 3.0 | Oui | Oui | |||||||
| Initialiseurs non constants | 1.21 | N/A | |||||||||
| Qualificatifs cvr idempotents | N505 | 3.0 | N/A | ||||||||
| Virgule finale dans enumerator-list | 0.9 | Oui | Oui | ||||||||
| Hexadécimal constantes flottantes | N308 | 2.8 | Oui | Oui | |||||||
| Littéraux composés | N716 | 3.1 | Oui | Oui | |||||||
| Environnement à virgule flottante | partiel | partiel | |||||||||
| Exiger la troncation pour les divisions des types entiers signés | N617 | 0.9 | N/A | ||||||||
Retour implicite
return
0
;
dans la
main()
fonction
|
Oui | Oui | Oui | ||||||||
| Déclarations et instructions en ordre mixte | N740 | 3.0 | Oui | Oui | |||||||
| init-statement dans les boucles for | Oui | Oui | Oui | ||||||||
| inline fonctions | N741 | 4.3 | Oui | Oui | |||||||
| Variable prédéfinie __func__ | N611 | 2.95 | Oui | Oui | |||||||
| Qualificateurs cv et static dans [ ] dans les déclarations de fonction | 3.1 | Oui | |||||||||
| Macros variadiques | N707 | 2.95 | Oui | Oui | |||||||
| _Pragma opérateur de préprocesseur | N634 | 3.0 | Oui | partiel * | |||||||
| Pragmas standards pour l'évaluation en virgule flottante |
N631
N696 |
Non | Non | ||||||||
|
Fonctionnalité C99 |
Document(s) |
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
Voir aussi
|
Documentation C++
pour
la prise en charge par le compilateur
|