web-dev-qa-db-fra.com

Qu'est-ce que C17 et quels changements ont été apportés à la langue?

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?

58
informaticienzero

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'utiliser flag_isoc17 ni aucune option pour les avertissements de compatibilité; Cependant, il existe une nouvelle valeur __STDC_VERSION__, de sorte que les nouveaux langages cpplib CLK_GNUC17 et CLK_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 de C18, 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]

51
msc

_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_:

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.

13
Nick S