C99
From cppreference.net
<
c
ISO/IEC 9899:1999 , également appelée C99 , est une révision antérieure de la norme C.
|
Cette section est incomplète
Raison : fonctionnalités du cœur/de la bibliothèque, TC1~TC3, DR |
Table des matières |
Nouvelles fonctionnalités du langage
- Noms de caractères universels dans les identifiants
- Limites de traduction augmentées
- // commentaires
- restrict pointeurs
-
Types
arithmétiques améliorés
- _Bool
- long long et unsigned long long
- Types entiers étendus
- _Complex types ( float _Complex , double _Complex , et long double _Complex )
- _Imaginary types ( float _Imaginary , double _Imaginary , et long double _Imaginary )
- Membres de tableau flexibles
- Tableaux de longueur variable (VLA) et types modifiables variables (VM)
-
Améliorations des
listes d'initialisation entre accolades
pour les
tableaux
,
structures et unions
- Initialiseurs non constants
- Initialiseurs désignés
- Qualificateurs cvr idempotents
- Virgule finale dans les listes d'énumérateurs
- Constantes flottantes hexadécimales
- Littéraux composés
- Environnement en virgule flottante
- Troncature requise pour les divisions des types entiers signés
-
Retour implicite
return
0
;
dans la
fonction main() - Déclarations et instructions en ordre mixte
- Instruction d'initialisation dans les boucles for
- Fonctions inline
- Variable prédéfinie __func__
- Qualificateurs cvr et static dans les [ ] des déclarations de fonctions
- Macros variadiques
- Opérateur de préprocesseur _Pragma
-
Pragmas standards pour l'évaluation en virgule flottante
-
STDCFENV_ACCESS -
STDCFP_CONTRACT -
STDCCX_LIMITED_RANGE
-
Macros de test de fonctionnalités pour les fonctionnalités optionnelles
-
__STDC_IEC_559__
- Indique que l'arithmétique binaire à virgule flottante IEEE-754 et les fonctions mathématiques requises sont prises en charge.
-
__STDC_IEC_559_COMPLEX__
- Indique que l'arithmétique complexe IEEE-754 et les fonctions mathématiques requises sont prises en charge.
-
__STDC_HOSTED__
- Indique que l'implémentation est hébergée .
-
__STDC_ISO_10646__
- Indique que l'Unicode est utilisé par les encodages de littéraux larges et s'étend à la dernière révision prise en charge.
-
__STDC_MB_MIGHT_NEQ_WC__
- Indique que certains caractères du jeu de caractères de base ont des valeurs d'unité de code différentes dans les encodages de littéraux ordinaires et larges .
Nouvelles fonctionnalités de la bibliothèque
Nouveaux en-têtes
Fonctionnalités de la bibliothèque
-
Alias pour les types entiers
-
Types entiers avec largeur exacte (
int N _tetuint N _t) -
Types entiers les plus rapides avec au moins une largeur donnée (
int_fast N _tetuint_fast N _t) -
Plus petits types entiers avec au moins une largeur donnée (
int_least N _tetuint_least N _t) - Types entiers capables de conversion entre pointeurs d'objets ( intptr_t et uintptr_t )
- Types entiers avec largeur maximale ( intmax_t et uintmax_t )
-
Types entiers avec largeur exacte (
- Opérations sur long long et intmax_t
- Accès à l'environnement en virgule flottante
-
Fonctions mathématiques étendues en virgule flottante
- Nouvelles fonctions mathématiques en virgule flottante
-
Variantes -
fet -lpour les fonctions mathématiques en virgule flottante existantes et nouvelles - Gestion des erreurs mathématiques
- Fonctions complexes
- _Exit()
- Prise en charge du formatage pour long long , unsigned long long , intmax_t , et uintmax_t
- isblank() et iswblank()
- snprintf() et vsnprintf()
- vfscanf() et vfwscanf() familles de fonctions
-
Extensions pour les familles de fonctions
fscanf()
et
fprintf()
-
Modificateur de longueur
llpour long long et unsigned long long -
Modificateur de longueur
hhpour signed char et unsigned char -
Modificateur de longueur
lpour double -
Modificateur de longueur
zpour size_t et sa version signée -
Modificateur de longueur
tpour ptrdiff_t et sa version non signée -
Modificateur de longueur
jpour intmax_t et uintmax_t -
Spécificateur de conversion
apour les types en virgule flottante
-
Modificateur de longueur
- Macros de limites numériques pour long long et unsigned long long
- Macros de limites numériques correspondant aux alias existants et nouveaux pour les types entiers
- Macros de chaîne de format pour les types entiers
- va_copy
- Macros mathématiques génériques de type
- Macros de comparaison en virgule flottante
- Macros de classification en virgule flottante
- Macros de compatibilité pour _Bool ( bool , true , et false )
Fonctionnalités obsolètes
Fonctionnalités supprimées
- Implicite int dans les déclarations
- Déclarations de fonctions implicites
Fonctionnalités dépréciées
Rapports de défauts
Template:c/language/history/DR99
Support du compilateur
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 translation limits | 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()
function
|
Oui | Oui | Oui | ||||||||
| Déclarations et instructions dans un 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
|