Pour de nombreuses questions, la réponse semble se trouver dans "la norme". Cependant, où trouvons-nous cela? De préférence en ligne.
La recherche sur Google peut parfois sembler futile, surtout pour les normes C, car elles sont noyées dans le flot des discussions sur les forums de programmation.
Pour commencer, puisque ce sont ceux que je recherche en ce moment, où existe-t-il de bonnes ressources en ligne pour:
- C89
- C99
- C11
- C ++ 98
- C ++ 03
- C ++ 11
- C ++ 14
- C ++ 17
Réponses:
Versions PDF de la norme
Au 1er septembre 2014, les meilleurs emplacements par prix pour les documents standards C et C ++ en PDF sont:
60 $ de ansi.org60 $ de Techstreet30 $ de ansi.org48 $ de SAI GlobalC ++ 98 - ISO / IEC 14882: 1998: 90 $ NZD (environ 60 $ US) de Standards New Zealand
C17 / C18 - ISO / IEC 9899: 2018: 185 $ de SAI Global / 116 $ d'INCITS / ANSI / N2176 / c17_updated_proposed_fdis.pdf draft de novembre 2017 (lien rompu, voir Wayback Machine N2176 )
30$ 60 $ de la version préliminaire N1570 ansi.org / WG1430$ 60 $ d'après ansi.org / WG14 version préliminaire N1256141 $ sur ansi.org175 $ sur Techstreet (la version australienne de C90, identique à ISO 9899: 1990)Vous ne pouvez généralement pas obtenir les anciennes révisions d'une norme (toute norme) directement des organismes de normalisation peu de temps après la publication d'une nouvelle édition de la norme. Ainsi, il sera difficile de trouver des normes pour C89, C90, C99, C ++ 98, C ++ 03 auprès d'un organisme de normalisation. Si vous avez besoin d'une ancienne révision d'une norme, vérifiez Techstreet comme une source possible. Par exemple, il peut toujours fournir la version canadienne CAN / CSA-ISO / IEC 9899: 1990 en format PDF, moyennant des frais.
Versions électroniques non PDF de la norme
Versions imprimées de la norme
Des exemplaires imprimés des normes sont disponibles auprès des organismes nationaux de normalisation et de l' ISO, mais sont très coûteux.
Si vous voulez une copie papier de la norme C90 pour beaucoup moins d'argent que ci-dessus, vous pourrez peut-être trouver une copie d'occasion bon marché du livre de Herb Schildt The Annotated ANSI Standard sur Amazon , qui contient le texte réel de la norme (utile) et commentaires sur la norme (moins utile - elle contient plusieurs erreurs dangereuses et trompeuses).
Les normes C99 et C ++ 03 sont disponibles sous forme de livre auprès de Wiley et du BSI (British Standards Institute):
Projets de versions du comité des normes (gratuits)
Les projets de normes futures sont souvent disponibles sur les sites web des commissions:
Si vous souhaitez obtenir des brouillons à partir des normes C / C ++ actuelles ou antérieures, certaines sont disponibles gratuitement sur Internet:
Pour C:
ANSI X3.159-198 (C89):
Je ne trouve pas de PDF de C89, mais il est presque le même que le projet ci-dessous pour ISO / IEC 9899: 1990 (C90). Les seules différences sont dans le passe-partout et la numérotation des sections.
ISO / CEI 9899: 1990 (C90):
https://www.pdf-archive.com/2014/10/02/ansi-iso-9899-1990-1/ansi-iso-9899-1990-1.pdf
(Presque le même que ANSI X3.159-198 (C89) à l'exception de la numérotation de la face avant et de la section. Notez que la conversion entre ANSI et la norme ISO / IEC est visible dans ce document, le document fait référence à son nom comme "ANSI / ISO : 9899/99 "bien que ce ne soit pas le nom correct de la norme la plus récente, le bon nom est" ISO / IEC 9899: 1990 ")
ISO / CEI 9899: 1999 (C99):
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
ISO / CEI 9899: 2011 (C11):
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
ISO / CEI 9899: 2018 (C18):
https://web.archive.org/web/20181230041359if_/http://www.open-std.org/jtc1/sc22/wg14/www/abq/c17_updated_proposed_fdis.pdf (N2176)
Pour C ++:
ISO / CEI 14882: 1998 (C ++ 98):
http://www.lirmm.fr/~ducour/Doc-objets/ISO+IEC+14882-1998.pdf
ISO / CEI 14882: 2003 (C ++ 03):
https://cs.nyu.edu/courses/fall11/CSCI-GA.2110-003/documents/c++2003std.pdf
ISO / CEI 14882: 2011 (C ++ 11):
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf
ISO / CEI 14882: 2014 (C ++ 14):
https://github.com/cplusplus/draft/blob/master/papers/n4140.pdf?raw=true
ISO / CEI 14882: 2017 (C ++ 17):
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4659.pdf
Notez que ces documents ne sont pas les mêmes que la norme, bien que les versions juste avant les réunions qui décident d'une norme soient généralement très proches de ce qui se trouve dans la norme finale. Les versions FCD (Final Committee Draft) sont protégées par mot de passe; vous devez faire partie du comité des normes pour les obtenir.
Même si les versions préliminaires peuvent être très proches des versions finales ratifiées des normes, certains éditeurs de ce poste vous conseillent fortement d'obtenir une copie des documents réels - surtout si vous prévoyez de les citer comme références. Bien sûr, les élèves affamés devraient continuer et utiliser les brouillons s'ils sont à court d'argent.
Il semble que, si vous êtes disposé et capable d'attendre quelques mois après la ratification d'une norme, rechercher "INCITS / ISO / IEC" au lieu de "ISO / IEC" lors de la recherche d'une norme soit la clé. Ce faisant, l'un des rédacteurs de cet article a pu trouver les normes C11 et C ++ 11 à des prix raisonnables. Par exemple, si vous recherchez «INCITS / ISO / IEC 9899: 2011» au lieu de «ISO / IEC 9899: 2011» sur webstore.ansi.org, vous trouverez la version PDF à un prix raisonnable.
Le site https://wg21.link/ fournit des liens URL courts vers le projet de travail actuel C ++ et les projets de normes et les documents de comité:
Le projet actuel de la norme est conservé en tant que sources LaTeX sur Github . Ces sources peuvent être converties en HTML à l'aide de cxxdraft-htmlgen . Les sites suivants gèrent les pages HTML ainsi générées:
Tim Song gère également les versions HTML et PDF générées des Networking TS et Ranges TS.
la source
Des versions en ligne de la norme peuvent être trouvées:
Projet de travail, norme pour le langage de programmation C ++
Voici toutes les versions préliminaires de la norme :
Toutes les versions suivantes sont téléchargeables gratuitement
(beaucoup d'entre elles peuvent être trouvées sur ce lien GitHub principal )
2020-01-14: N4849 git
2019-11-27: N4842 git
2019-10-08: N4835 git
2019-08-15: N4830 git
2019-06-17: N4820 git
2019-03-15: N4810 git
2019-01-21: N4800 git
2018-11-26: N4791 git
2018-10-08: N4778 git
07/07/2018: N4762 git
07/05/2018:N4750 git
2018-04-02: N4741 git
2018-02-12: N4727 git
2017-11-27: N4713 git
2017-10-16: N4700 git
2017-07-30: N4687 git
Cela semble être la nouvelle norme: cette
version nécessite une authentification
21/03/2017: N4660 est le projet de norme C ++ 17
Voici toutes les versions préliminaires de la norme :
Toutes les versions suivantes sont téléchargeables gratuitement
2017-03-21: N4659 git
2017-02-06: N4640 git
2016-11-28: N4618 git
2016-07-12: N4606 git
2016-05 -30: N4594 git
2016-03-19: N4582 git
2015-11-09: N4567 git
2015-05-22: N4527 git
2015-04-10: N4431 git
2014-11-19: N4296 git
Cela semble être l'ancien standard C ++ 14 :
Cette version nécessite l'authentification
2014-10-07: N4140 git Essentiellement C ++ 14 avec des erreurs mineures et des fautes de frappe corrigées
2014-09-02: N4141 git Standard C ++ 14
2014- 03-02: N3937
2014-03-02: N3936 git
Voici toutes les versions préliminaires de la norme :
Toutes les versions suivantes sont téléchargeables gratuitement le
2013-10-13: N3797 git
2013-05-16: N3691
2013-05-15: N3690
2012-11-02: N3485
2012-02-28: N3376 16-01-2012
: N3337 git Essentiellement C ++ 11 avec des erreurs mineures et des fautes de frappe corrigées
Cela semble être l'ancienne norme C ++ 11 :
cette version nécessite l'authentification
2011-04-05: N3291 C ++ 11 (ou très proche)
Voici toutes les versions préliminaires de la norme :
Toutes les versions suivantes sont téléchargeables gratuitement
2011-02-28: N3242 (différences par rapport à N3291 très mineures)
2010-11-27: N3225
2010-08-21: N3126
2010-03-29: N3090
2010-02-16: N3035
2009-11-09: N3000
2009-09-25: N2960
2009-06-22: N2914
2009-03-23: N2857
2008-10-04: N2798
2008-08-25: N2723
2008 -06-27: N2691
2008-05-19: N2606
2008-03-17: N2588
2008-02-04: N2521
2007-10-22: N2461
2007-08-06: N2369
2007-06-25: N2315
2007-05-07: N2284
2006-11-03: N2134
2006-04-21: N2009
2005-10-19: N1905
2005 -04-27: N1804
Cela semble être l'ancien standard C ++ 03:
toutes les versions ci-dessous nécessitent une authentification
2004-11-05: N1733
2004-07-16: N1655 non officiel
2004-02-07: N1577 C ++ 03 (ou très proche)
2001 -09 à 13: N1316 Projet de rectificatif technique élargi
1997-00-00: N1117 Projet technique élargi rectificatif
Toutes les versions préliminaires suivantes de la norme :
Toutes les versions suivantes sont téléchargeables gratuitement
1996-00-00: N0836 Projet de rectificatif technique élargi
1995-00-00: N0785 Document de travail pour le projet de norme internationale proposée pour les systèmes d'information - Langage de programmation C ++
Autres articles intéressants:
2 020 / 2019 / 2018 / 2017 / 2016 / ici à 2015 / 2014 / 2013 / 2012 / 2011
la source
C99 est disponible en ligne . Cité sur www.open-std.org :
la source
Projets de liens:
C ++ 11 (+ correctifs éditoriaux): N3337 HTML , PDF
C ++ 14 (+ correctifs éditoriaux): N4140 HTML , PDF
C11 N1570 ( texte )
C99 N1256
la source
Vous pourriez trouver le projet de norme internationale pour C ++ 0x utile.
la source
Les normes ISO coûtent de l'argent, d'un montant modéré (pour une version PDF) à un peu plus (pour une version livre).
Bien qu'ils ne soient pas finalisés, ils peuvent généralement être consultés en ligne, sous forme de brouillons. La plupart du temps, la version finale ne diffère pas considérablement du dernier projet, donc bien qu'elle ne soit pas parfaite, elle conviendra très bien.
la source
Les normes C99 et C ++ 03 sont disponibles sous forme de livre auprès de Wiley:
De plus, comme déjà mentionné, le projet de travail pour les futures normes est souvent disponible sur les sites Web des comités:
Le projet C-201x est disponible en tant que N1336 et le projet C ++ 0x en tant que N3225 .
la source
Les normes ISO C et C ++ coûtent cher. En revanche, les INCITS les republient pour beaucoup moins. http://www.techstreet.com/ semble avoir le PDF pour 30 $ (recherchez INCITS / ISO / IEC 14882: 2003).
Des versions papier sont également disponibles. Recherchez les versions du British Standards Institute publiées par Wiley.
la source
Les documents normatifs réels ne sont peut-être pas les plus utiles. La plupart des compilateurs n'appliquent pas entièrement les normes et peuvent parfois être en conflit. Ainsi, la documentation du compilateur que vous auriez déjà sera plus utile. De plus, la documentation contiendra des remarques et des notes spécifiques à la plate-forme sur toutes les mises en garde.
la source
Le texte d'un projet de norme ANSI C (alias C.89) est disponible en ligne. Cela a été normalisé par le comité ANSI avant l'acceptation par la norme ISO C (C.90), de sorte que la numérotation des sections diffère (les sections ANSI 2 à 4 correspondent à peu près aux sections ISO 5 à 7), bien que le contenu soit (supposé être) largement identique.
la source
[0, 60]
, tandis que C90 (incorrectement)[0, 61]
tm_sec
est(0, 61)
. Je pensais que c'était pour des secondes intercalaires, c'était logique.Bien qu'il ne s'agisse pas d'une norme réelle, il existe un amendement à l'ISO C (C89 / 90) appelé C94 / 95, ou additif normatif 1. Il a été intégré à C99, bien que certains compilateurs tels que Clang vous permettent de spécifier
-std=c94
en ligne de commande. ISO / IEC 9899: 1990 / Amd 1: 1995 peuvent être achetés à un prix élevé auprès de SAI GLOBAL (PDF ou copie papier).Un résumé du document peut être trouvé ici .
la source
http://c0x.coding-guidelines.com/ contient une version HTML consultable de la norme C. En fait, une version légèrement modifiée:
la source