Où puis-je trouver les documents standard actuels C ou C ++?
Question
Pour de nombreuses questions, la réponse semble être trouvée dans "le standard". Cependant, où trouvons-nous cela? De préférence en ligne.
Googler peut parfois sembler futile, surtout pour les standards C, car ils sont noyés dans le flot de 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
La solution
Versions PDF de la norme
À partir du 1er septembre 2014, les meilleurs emplacements par prix pour les documents standard C et C ++ au format PDF sont:
- C ++ 17 & # 8211; ISO / CEI 14882: 2017: 116 $ US ansi.org
- C ++ 14 & # 8211; ISO / CEI 14882: 2014: 90 NZD (environ 60 $ US) ) de Standards New Zealand
- C ++ 11 & # 8211; ISO / CEI 14882: 2011:
60 USD de ansi.org60 USD de Techstreet - C ++ 03 & # 8211; ISO 14882: 2003:
30 USD à partir de ansi.org48 USD à partir de SAI Global -
C ++ 98 & # 8211; ISO / IEC 14882: 1998: 90 NZD (environ 60 $ US) ) de Standards New Zealand
-
C17 / C18 & # 8211; ISO / CEI 9899: 2018: 232 $ d'ansi.org / N2176 / c17_updated_propdis_fdis.pdf" rel="noreferrer"> N2176 / c17_updated_propdis_proposed_frappies_fdis.pdf de novembre 2017 (lien brisé, voir Wayback Machine N2176 )
- C11 & # 8211; ISO / CEI 9899: 2011:
30 $ US60 $ de ansi.org / GT14 version préliminaire N1570 - C99 & # 8211; ISO 9899: 1999:
30 $60 $ de ansi.org / Version préliminaire WG14 N1256 - C90 & # 8211; AS 3955-1991:
141 $ d'ansi.org175 $ de Techstreet ( la version australienne de C90, identique à ISO 9899: 1990) - C90 & # 8211; 9899: 1990 Copie papier disponible chez SAI Global (88 USD + expédition)
Vous ne pouvez généralement pas obtenir les anciennes révisions d'une norme (n'importe quelle norme) directement auprès 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, cochez Techstreet l'une des sources possibles. Par exemple, il peut toujours fournir la version canadienne de la norme canadienne CAN / CSA-ISO / IEC 9899: 1990, moyennant un supplément.
Versions électroniques non PDF de la norme
- C89 & # 8211; Version brouillon au format texte ANSI: ( https://web.archive.org/web/20161223125339/http://flash-gordon.me.uk/ansi.c.txt )
- C90 TC1; ISO / IEC 9899 TCOR1, document HTML d'une seule page: ( http://www.open-std.org/jtc1/sc22/wg14/www/docs/tc1.htm )
- C90 TC2; ISO / IEC 9899 TCOR2, document HTML d'une seule page: ( http://www.open-std.org/jtc1/sc22/wg14/www/docs/tc2.htm )
Imprimer les versions de la norme
Des copies imprimées des normes sont disponibles auprès des organismes nationaux de normalisation et sont ISO , mais elles sont très onéreuses.
Si vous souhaitez obtenir une copie papier de la norme C90 à un prix nettement inférieur, vous pourrez peut-être trouver une copie bon marché de Le livre de Herb Schildt La norme ANSI annotée sur Amazon , qui contient le texte actuel de la norme (utile ) et commentaire sur le standard (moins utile).
Les normes C99 et C ++ 03 sont disponibles sous forme de livre auprès de Wiley et du BSI (British Standards Institute):
- C ++ 03 Standard sur Amazon
- C99 Standard sur Amazon
Version préliminaire du comité de normalisation
Le brouillon des futures normes est souvent disponible sur les sites Web des comités:
Notez que ces documents ne sont pas identiques à 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 celles de 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.
Cependant, à mon avis, même si les versions provisoires sont très proches des versions finales ratifiées des normes, vous devriez vraiment obtenir une copie des documents eux-mêmes & # 8212; surtout si vous envisagez de les citer comme références. Bien sûr, les étudiants affamés devraient aller de l'avant et utiliser les brouillons s'ils sont à court d'argent.
Il semble que si vous êtes prêt et en mesure d’attendre quelques mois après la ratification d’une norme, recherchez "INCITS / ISO / IEC". au lieu de " ISO / IEC " lorsque vous recherchez un standard est la clé. De cette façon, j'ai pu trouver le standard C ++ 11 à un prix raisonnable et maintenant le standard C11. Ainsi, à titre d’exemple, vous recherchez "INCITS / ISO / IEC 9899: 2011". au lieu de & ISO; CEI 9899: 2011 " sur boutique en ligne.ansi.org et vous trouverez la version PDF à un prix raisonnable.
Le site https://wg21.link/ fournit des liens URL courts vers le brouillon actuel et le brouillon C ++. normes et documents des commissions:
- https://wg21.link/std11 - C ++ 11
- https://wg21.link/std14 - C ++ 14
- https://wg21.link/std17 - C ++ 17
- https://wg21.link/std - brouillon en cours
La version actuelle de la norme est gérée en tant que sources LaTeX dans Github . Ces sources peuvent être converties en HTML à l’aide de cxxdraft-htmlgen . Les sites suivants conservent les pages HTML ainsi générées:
- Tim Song - brouillon actuel - C ++ 11 - C ++ 14 - C ++ 17
- Eelis - Brouillon de travail actuel
Tim Song gère également les versions HTML et PDF générées des serveurs TS Networking et Ranges TS <. / p>
Autres conseils
Online versions of the standard can be found:
Working Draft, Standard for Programming Language C++
The following all draft versions of the standard:
All the following are freely downloadable
2019-03-15: N4810 git
2019-01-21: N4800 git
2018-11-26: N4791 git
2018-10-08: N4778 git
2018-07-07: N4762 git
2018-05-07: 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
This seems to be the new standard:
These version requires Authentication
2017-03-21: N4660 is the C++17 Draft Standard
The following all draft versions of the standard:
All the following are freely downloadable
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
This seems to be the old C++14 standard:
These version requires Authentication
2014-10-07: N4140 git Essentially C++14 with minor errors and typos corrected
2014-09-02: N4141 git Standard C++14
2014-03-02: N3937
2014-03-02: N3936 git
The following all draft versions of the standard:
All the following are freely downloadable
2013-10-13: N3797 git
2013-05-16: N3691
2013-05-15: N3690
2012-11-02: N3485
2012-02-28: N3376
2012-01-16: N3337 git Essentially C++11 with minor errors and typos corrected
This seems to be the old C++11 standard:
This version requires Authentication
2011-04-05: N3291 C++11 (Or Very Close)
The following all draft versions of the standard:
All the following are freely downloadable
2011-02-28: N3242 (differences from N3291 very minor)
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
This seems to be the old C++03 standard:
All the below versions require Authentication
2004-11-05: N1733
2004-07-16: N1655 Unofficial
2004-02-07: N1577 C++03 (Or Very Close)
2001-09-13: N1316 Draft Expanded Technical Corrigendum
1997-00-00: N1117 Draft Expanded Technical Corrigendum
The following all draft versions of the standard:
All the following are freely downloadable
1996-00-00: N0836 Draft Expanded Technical Corrigendum
1995-00-00: N0785 Working Paper for Draft Proposed International Standard for Information Systems - Programming Language C++
Other Interesting Papers:
2019 / 2018 / 2017 / 2016 / 2015 / 2014 / 2013 / 2012 / 2011
C99 is available online. Quoted from www.open-std.org:
The lastest publically available version of the standard is the combined C99 + TC1 + TC2 + TC3, WG14 N1256, dated 2007-09-07. This is a WG14 working paper, but it reflects the consolidated standard at the time of issue.
Draft Links:
C++11 (+editorial fixes): N3337 HTML, PDF
C++14 (+editorial fixes): N4140 HTML, PDF
C99 N1256
Drafts of the Standard are circulated for comment prior to ratification and publication.
Note that a working draft is not the standard currently in force, and it is not exactly the published standard
You might find the draft international standard for C++0x useful.
ISO standards cost money, from a moderate amount (for a PDF version), to a bit more (for a book version).
While they aren't finalised however, they can usually be found online, as drafts. Most of the times the final version doesn't differ significantly from the last draft, so while not perfect, they'll suit just fine.
The ISO C and C++ standards are bloody expensive. On the other hand, the INCITS republishes them for a lot less. http://www.techstreet.com/ seems to have the PDF for $30 (search for INCITS/ISO/IEC 14882:2003).
Hardcopy versions are available, too. Look for the British Standards Institute versions, published by Wiley.
The text of a draft of the ANSI C standard (aka C.89) is available online. This was standardized by the ANSI committee prior to acceptance by the ISO C Standard (C.90), so the numbering of the sections differ (ANSI sections 2 through 4 correspond roughly to ISO sections 5 through 7), although the content is (supposed to be) largely identical.
The actual standards documents may not be the most useful. Most compilers do not fully implement the standards and may sometimes actually conflict. So the compiler documentation that you would already have will be more useful. Additionally, the documentation will contain platform-specific remarks and notes on any caveats.
Although not an actual standard, there is an amendment to ISO C (C89/90) called C94/95, or Normative Addendum 1. It was integrated into C99, although some compilers such as Clang allow you to specifiy -std=c94
on the command line. ISO/IEC 9899:1990/Amd 1:1995 can be purchased for a hefty price from SAI GLOBAL (PDF or hard copy).
A summary of the document can be found here.
When the (then draft) ANSI C Standard was being considered for adoption of an International Standard in 1990, there were several objections because it didn't address internationalization issues. Because the Standard had already been several years in the making, it was agreed that a few changes would be made to provide the basis (for example, the functions in subclause 7.10.7 were added), and work would be carried out separately to provide proper internationalization of the Standard. This work has culminated in Normative Addendum 1.
Normative Addendum 1 embodies C's reaction to both the limitations and promises of international character sets. Digraphs and the header were meant to improve the appearance of C programs written in national variants of ISO 646 without, e.g., { or } characters. On the other end of the spectrum, the facilities connected to and extend the old Standard's barely adequate basis into a complete and consistent set of utilities for handling wide characters and multibyte strings.
This document summarizes Normative Addendum 1. It is intended to quickly inform readers who are already familiar with the Standard; it does not, and cannot, introduce the complex subject matter behind NA1, nor can it replace the original document as a reference manual. (Nevertheless, it tries to be as accurate as possible, and its author would like to hear about any errors or omissions.)
http://c0x.coding-guidelines.com/ contains a searchable, HTML-based version of the C standard. Actually, a slightly modified version:
This web site contains a modified version of N1256. It includes wording that has been deleted from C99 (i.e., in struck through form) and wording that does used to appear in C99 (i.e., in underlined form).