Alors que je vérifiais les nouvelles de GCC 8, j'ai v avoir ajouté la prise en charge de la version 2017 du langage C (et non de C++ 17, mais vraiment de C17). Mais je ne trouve aucune information à ce sujet sur Internet.
S'agit-il d'une nouvelle version ISO comme C11 ou juste d'un nom de code utilisé par l'équipe de GCC pour certaines corrections dans leur compilateur?
Selon GCC référence, C17
est en fait une version de résolution de bugs du C11
standard avec résolutions DR intégrées.
C17 , une version corrigeant les erreurs du standard C11 avec résolutions DR intégrées , ira bientôt au vote. Ce correctif ajoute les options correspondantes
-std=c17
,-std=gnu17
(nouvelle version par défaut, remplaçant-std=gnu11
par défaut),-std=iso9899:2017
. En tant que version corrective de bogues du standard, il n'est pas nécessaire d'utiliserflag_isoc17
ni aucune option pour les avertissements de compatibilité; Cependant, il existe une nouvelle valeur__STDC_VERSION__
, de sorte que les nouveaux langages cpplibCLK_GNUC17
etCLK_STDC17
sont ajoutés pour prendre en charge l'utilisation de cette nouvelle valeur avec les nouvelles options. (Si le standard finit par être publié en 2018 et connu sous le nom deC18
, vous pouvez ajouter des alias d'options. Notez cependant que-std=iso9899:199409
correspond à une valeur__STDC_VERSION__
plutôt qu'à une date de publication.)(Quelques résolutions de DR doivent être mises en œuvre dans GCC, mais elles ne dépendent pas des nouvelles options.)
Donc, il n'y a pas de nouvelles fonctionnalités incluses dans C17.
Le Cppreference (Histoire de C) dit:
Développement futur
C17 La révision mineure suivante du langage C inclura tous les rapports de défaut C11 acceptés, mais aucune nouvelle fonctionnalité .
UPDATE:
- 2018: C17 (ISO/IEC 9899: 2018) ( ISO Store) ( Projet final ) Inclut la désapprobation de
ATOMIC_VAR_INIT
et les correctifs suivants. rapports de défaut:[DR 400] , [DR 401] , [DR 402] , [DR 403] , - [DR 404] , [DR 405] , [DR 406] , [DR 407] , [DR 410] , [DR 412] , [DR 414] , [DR 415] , [DR 416] , [DR 417] , [DR 419] , [DR 423] , [DR 426] , [DR 428] , [DR 429] , [DR 430] , [DR 431] =, [DR 433] , [DR 434] , [DR 436] , [DR 437] , [DR 438] , [DR 439] , [DR 441] , [DR 444] , - [DR 445] , [DR 447] , [DR 448] , [DR 450] , [DR 452] , [DR 453] , [DR 457] , [DR 458] , [DR 459] , [DR 460] , [DR 462] , [DR 464] , [DR 465] , [DR 468] , [DR 470] , [DR 471] , [DR 472] =, [DR 473] , [DR 475] , [DR 477] , [DR 480] , [DR 481] , [DR 485] , [DR 487] , [DR 491]
_C17
_ est une "version corrigée" du standard C comment "_M.S Chaudhari
_" l’a remarqué. Cependant, il existe des informations très utiles préparées par _Jens Gustedt
_ l'auteur du livre _"Modern C"
_.
Il a identifié la liste suivante de modifications dans _C17
_ par rapport à _C11
_:
atomiques : initialisation (7.17.2, 7.31.8) , impératifs de cohérence (5.1.2.4), barrières (7.17.3 p11), fonctions ou macros (7.17.1 p6), lockfree dépend du type (7.17.5 p3), le commutateur de comparaison compare la mémoire et non la valeur (7.17.7.3) , atomic_flag (7.17.18) .
threads: défaillances parasites (7.26.3.5 p2, 7.26.3.6 p2, 7.26.4.5 p3) , synchronisation (7.26.4 p1), spécifiques à un thread stockage (_
tss_t
_) et sortie de thread (7.26.5 p3, 7.26.5.5, 7.26.6)alignement: alignement fondamental (6.2.8), _
_Alignas
_ (6.7.5), _aligned_alloc
_ (7.22.3.1)points de séquence: expressions complètes (6.8 p4), déclarateurs complets (6.7..6 p3)
boucles infinies (6.8.5 p6)
identificateurs réservés (7.1.3)
erreurs de domaine ou de plage (7.12.1),
ilogb
,erfc
,lgamma
.sous-spécification de
clock
(7.27.2.1)sous-spécification de
realloc
pour la taille 0 (7.22.3.5)Annexe F: _
FLT_ROUNDS
_ (F.2 p1)Annexe K: _
tmpnam_s
_, _snprintf_s
_, _sprintf_s
_, _vsprintf_s
_, _get_s
_, _mbstowcs_s
_ , _wcstombs_s
_, _snwprintf_s
_, _swprintf_s
_, _vsnwprintf_s
_, _vswprint_s
_, _mbsrtowcs_s
_, _wcsrtombs_s
_.
Lien vers la page principale C17 .
En outre, ce contenu sera mis à jour par Jens
que vous pouvez suivre pour mettre à jour ici Jeans Gustedt Blog .
P.S: before posting all this stuff I received approval from the author.