76 votes

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 vu qu'ils ajoutaient un support pour la version 2017 du langage C (pas C ++ 17, mais vraiment C17). Mais je ne trouve aucune information à ce sujet sur Internet.

S'agit-il d'une nouvelle version ISO telle que C11 ou juste d'un nom de code utilisé par l'équipe de GCC pour certaines corrections dans leur compilateur?

63voto

Rxmsc Points 927

Selon GCC de référence, C17 est en fait un bug-fix version de l' C11 standard avec le DR résolutions intégré.

C17, la correction d'un bug de la version de la norme C11 avec le DR résolutions intégrée de, va bientôt aller aux urnes. Ce patch ajoute correspondant options -std=c17, -std=gnu17 (nouvelle version par défaut, en remplacement de -std=gnu11 comme valeur par défaut), -std=iso9899:2017. Comme la correction d'un bug de la version de la norme, il n'est pas nécessaire pour flag_isoc17 ou toutes les options pour la compatibilité des avertissements; cependant, il y a un nouveau __STDC_VERSION__ valeur, de sorte que de nouveaux cpplib langues CLK_GNUC17 et CLK_STDC17 sont ajoutés à support à l'aide de cette nouvelle valeur avec les nouvelles options. (Si la norme finit par être publié en 2018 et d'être connu comme l' C18, l'option alias peut être ajouté. Notez toutefois que l' -std=iso9899:199409 correspond à une __STDC_VERSION__ de la valeur plutôt qu'une date de publication.)

(Il ya un couple de DR résolutions ayant besoin de la mise en œuvre de GCC, mais c'est indépendant de la de nouvelles options.)

Donc, il n'y a pas de nouvelles fonctionnalités incluses dans C17.

Le Cppreference (Histoire de C) dit:

Le développement futur

C17 mineure Suivante langage C norme de révision, comprendra tous accepté C11 rapports de défaut, mais pas de nouvelles fonctionnalités.

Mise à JOUR:

  • 2018: C17 (ISO/IEC 9899:2018) (ISO Store) (projet Final) Comprend la dépréciation de l' ATOMIC_VAR_INIT et les correctifs pour les suite à des 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]

31voto

Nick S Points 820

C17 est une "version de correction" de la norme C comment "M.S Chaudhari" remarqué. Cependant, il est très utile d'information préparé par Jens Gustedt l'auteur de l' "Modern C" livre.


Il a dressé la liste suivante des changements en C17 par rapport à l' C11:

Lien vers la page principale C17.


Aussi, ce contenu sera mis à jour en Jens vous pouvez suivre pour mettre à jour ici, Jeans Gustedt Blog.

P.S: before posting all this stuff I received approval from the author.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X