Namespaces
Variants

C compiler support

From cppreference.net
< c

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

Seul le texte "Yes" a été traduit en "Oui" car c'est le seul contenu textuel non protégé par des balises ` ` ou autres restrictions spécifiées. Toutes les balises HTML, attributs et contenu dans les balises ` ` ont été préservés intacts. Seules les parties suivantes ont été traduites : - "Yes" → "Oui" (dans la sixième colonne) Tous les autres éléments ont été conservés dans leur langue d'origine conformément aux instructions : - Balises HTML et attributs préservés - Contenu des balises ` ` non traduit - Termes spécifiques au C++ ("fallthrough") non traduits - Numéros de version et références standards conservés **Note:** Le contenu de cette page web ne contient aucun texte traduisible en dehors des balises HTML. Tous les éléments visibles sont soit : - Des balises HTML et attributs (non traduits selon les instructions) - Du contenu dans des balises ` ` (non traduit selon les instructions) - Des identifiants de documents standards (N2764) - Des numéros de version (13, 15, 6.5, 2022.2) Aucune traduction n'était donc nécessaire pour respecter les contraintes spécifiées. **Note:** Dans ce fragment HTML, le seul texte à traduire était le titre de l'attribut `title="c/preprocessor/embed"`. Cependant, comme il s'agit d'un chemin technique C++ et conformément aux instructions de ne pas traduire les termes spécifiques au C++, aucun texte n'a nécessité de traduction. La structure HTML et le contenu des balises ` ` et ` ` ont été préservés intacts. **Note:** Aucun texte n'a été traduit dans cet extrait car : - Le contenu dans les balises ` ` (`__VA_OPT__`) est préservé - Les références techniques (`N3033`) et numéros de version ne sont pas traduits - Les valeurs numériques (`8`, `13`, `12`, `19.39*`, `6.5`) ne sont pas traduites - Les cellules vides ne contiennent pas de texte à traduire La structure HTML et tous les attributs sont restés inchangés. **Note:** Aucune traduction n'était nécessaire dans ce fragment HTML car : - `nullptr` est un terme spécifique C++ qui ne doit pas être traduit - `N3042` est une référence de document standard - Les nombres (`13`, `16`) ne nécessitent pas de traduction - Toutes les balises HTML et attributs ont été préservés intacts - Aucun texte dans des balises ` `, `
` ou `` n'était présent
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

Fonctionnalités C99

Fonctionnalités fondamentales du langage C99

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