Bei vielen Fragen scheint die Antwort im "Standard" zu liegen. Wo finden wir das jedoch? Am besten online.
Googeln kann sich manchmal sinnlos anfühlen, insbesondere für die C-Standards, da sie in der Flut von Diskussionen in Programmierforen ertrinken.
Da dies die sind, nach denen ich gerade suche, gibt es gute Online-Ressourcen für:
- C89
- C99
- C11
- C ++ 98
- C ++ 03
- C ++ 11
- C ++ 14
- C ++ 17
Antworten:
PDF-Versionen des Standards
Ab dem 1. September 2014 sind die besten Standorte nach Preis für C- und C ++ - Standarddokumente in PDF:
60 USD von ansi.org60 USD von Techstreet30 USD von ansi.org48 USD von SAI GlobalC ++ 98 - ISO / IEC 14882: 1998: 90 NZD (ca. 60 US-Dollar) von Standards New Zealand
C17 / C18 - ISO / IEC 9899: 2018: 185 USD von SAI Global / 116 USD von INCITS / ANSI / N2176 / c17_updated_proposed_fdis.pdf Entwurf vom November 2017 (Link defekt, siehe Wayback Machine N2176 )
30USD 60 USD von ansi.org / WG14 Entwurfsversion N1570$ 30$ 60 von ansi.org / WG14 Entwurfsversion N1256141 USD von ansi.org175 USD von Techstreet (die australische Version von C90, identisch mit ISO 9899: 1990)In der Regel können Sie alte Revisionen eines Standards (eines Standards) nicht direkt von den Normungsgremien erhalten, kurz nachdem eine neue Ausgabe des Standards veröffentlicht wurde. Daher sind Standards für C89, C90, C99, C ++ 98, C ++ 03 für den Kauf bei einem Standardisierungsgremium schwer zu finden. Wenn Sie eine alte Überarbeitung eines Standards benötigen, überprüfen Sie Techstreet als eine mögliche Quelle. Beispielsweise kann die kanadische Version CAN / CSA-ISO / IEC 9899: 1990 gegen eine Gebühr weiterhin als PDF bereitgestellt werden.
Elektronische Nicht-PDF-Versionen des Standards
Druckversionen des Standards
Druckexemplare der Normen sind bei nationalen Normungsgremien und ISO erhältlich, jedoch sehr teuer.
Wenn Sie eine Hardcopy des C90-Standards für viel weniger Geld als oben möchten, finden Sie möglicherweise eine billige gebrauchte Ausgabe von Herb Schildts Buch The Annotated ANSI Standard bei Amazon , die den eigentlichen Text des Standards enthält (nützlich). und Kommentar zum Standard (weniger nützlich - er enthält mehrere gefährliche und irreführende Fehler).
Die Standards C99 und C ++ 03 sind in Buchform bei Wiley und dem BSI (British Standards Institute) erhältlich:
Entwurfsversionen des Normungsausschusses (kostenlos)
Die Arbeitsentwürfe für zukünftige Standards sind häufig auf den Websites der Ausschüsse verfügbar:
Wenn Sie Entwürfe aus den aktuellen oder früheren C / C ++ - Standards erhalten möchten, stehen einige im Internet kostenlos zur Verfügung:
Für C:
ANSI X3.159-198 (C89):
Ich kann kein PDF von C89 finden, aber es entspricht fast dem folgenden Entwurf für ISO / IEC 9899: 1990 (C90). Die einzigen Unterschiede bestehen in der Kesselplatte und der Abschnittsnummerierung.
ISO / IEC 9899: 1990 (C90):
https://www.pdf-archive.com/2014/10/02/ansi-iso-9899-1990-1/ansi-iso-9899-1990-1.pdf
(Mit Ausnahme der Frontmatter- und Abschnittsnummerierung fast identisch mit ANSI X3.159-198 (C89). Beachten Sie, dass die Konvertierung zwischen ANSI und ISO / IEC-Standard in diesem Dokument enthalten ist. Das Dokument bezieht sich auf seinen Namen als "ANSI / ISO" : 9899/99 "obwohl dies nicht der richtige Name des später erstellten Standards ist, lautet der richtige Name" ISO / IEC 9899: 1990 ")
ISO / IEC 9899: 1999 (C99):
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
ISO / IEC 9899: 2011 (C11):
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
ISO / IEC 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)
Für C ++:
ISO / IEC 14882: 1998 (C ++ 98):
http://www.lirmm.fr/~ducour/Doc-objets/ISO+IEC+14882-1998.pdf
ISO / IEC 14882: 2003 (C ++ 03):
https://cs.nyu.edu/courses/fall11/CSCI-GA.2110-003/documents/c++2003std.pdf
ISO / IEC 14882: 2011 (C ++ 11):
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf
ISO / IEC 14882: 2014 (C ++ 14):
https://github.com/cplusplus/draft/blob/master/papers/n4140.pdf?raw=true
ISO / IEC 14882: 2017 (C ++ 17):
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4659.pdf
Beachten Sie, dass diese Dokumente nicht mit dem Standard identisch sind, obwohl die Versionen unmittelbar vor den Besprechungen, in denen über einen Standard entschieden wird, normalerweise sehr nahe an dem Wert des endgültigen Standards liegen. Die FCD-Versionen (Final Committee Draft) sind passwortgeschützt. Sie müssen im Normungsausschuss sein, um sie zu erhalten.
Auch wenn die Entwurfsversionen möglicherweise sehr nahe an den endgültig ratifizierten Versionen der Standards liegen, empfehlen einige Redakteure dieses Beitrags dringend, eine Kopie der tatsächlichen Dokumente zu erhalten - insbesondere, wenn Sie sie als Referenzen zitieren möchten. Natürlich sollten hungernde Schüler die Entwürfe verwenden, wenn sie Geld haben.
Es scheint, dass, wenn Sie bereit und in der Lage sind, einige Monate nach der Ratifizierung eines Standards zu warten, die Suche nach "INCITS / ISO / IEC" anstelle von "ISO / IEC" bei der Suche nach einem Standard der Schlüssel ist. Auf diese Weise konnte einer der Redakteure dieses Beitrags die Standards C11 und C ++ 11 zu angemessenen Preisen finden. Wenn Sie suchen zum Beispiel für "INCITS / ISO / IEC 9899: 2011": auf statt "2011 ISO / IEC 9899" webstore.ansi.org ist die kostengünstige PDF - Version.
Die Website https://wg21.link/ bietet Links mit kurzen URLs zum aktuellen C ++ - Arbeitsentwurf und Standardentwürfen sowie zu Ausschusspapieren:
Der aktuelle Entwurf des Standards wird als LaTeX-Quelle auf Github beibehalten . Diese Quellen können mit cxxdraft-htmlgen in HTML konvertiert werden . Die folgenden Websites verwalten die so generierten HTML-Seiten:
Tim Song verwaltet auch generierte HTML- und PDF-Versionen des Networking TS und des Ranges TS.
quelle
Online-Versionen des Standards finden Sie unter:
Arbeitsentwurf, Standard für die Programmiersprache C ++
Folgende alle Entwurfsversionen des Standards :
Alle folgenden können kostenlos heruntergeladen werden
(viele davon finden Sie unter diesem GitHub-Hauptlink )
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
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
Dies scheint der neue Standard zu sein:
Diese Version erfordert Authentifizierung
2017-03-21: N4660 ist der C ++ 17 Draft Standard
Folgende alle Entwurfsversionen des Standards :
Alle folgenden sind frei herunterladbar
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
Dies scheint der alte C ++ 14-Standard zu sein :
Diese Version erfordert Authentifizierung
2014-10-07: N4140 git Im Wesentlichen C ++ 14 mit geringfügigen Fehlern und korrigierten Tippfehlern
2014-09-02: N4141 git Standard C ++ 14
2014- 03-02: N3937
02.03.2014: N3936 git
Die folgenden Entwürfe aller Standards :
Alle folgenden können kostenlos heruntergeladen werden
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 Im Wesentlichen C ++ 11 mit geringfügigen Fehlern und korrigierten Tippfehlern
Dies scheint der alte C ++ 11-Standard zu sein :
Diese Version erfordert Authentifizierung.
2011-04-05: N3291 C ++ 11 (oder sehr nah)
Folgende alle Entwurfsversionen des Standards :
Alle folgenden sind frei herunterladbar
2011-02-28: N3242 (Unterschiede zu N3291 sehr gering)
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
Dies scheint der alte C ++ 03-Standard zu sein: Für
alle folgenden Versionen ist eine Authentifizierung erforderlich.
2004-11-05: N1733
2004-07-16: N1655 Inoffiziell
2004-02-07: N1577 C ++ 03 (oder sehr nah)
2001 -09-13: N1316 Entwurf einer erweiterten technischen Berichtigung
1997-00-00: N1117 Entwurf einer erweiterten technischen Berichtigung
Die folgenden Entwürfe aller Standards :
Alle folgenden sind frei herunterladbar
1996-00-00: N0836 Entwurf einer erweiterten technischen Berichtigung
1995-00-00: N0785 Arbeitspapier für den Entwurf eines vorgeschlagenen internationalen Standards für Informationssysteme - Programmiersprache C ++
Andere interessante Papiere:
- 2020 - / 2019 / 2018 / Jahr 2017 / Jahr 2016 / zum Jahr 2015 / Jahr 2014 / 2013 / 2012 / 2011
quelle
C99 ist online verfügbar . Zitiert von www.open-std.org :
quelle
Entwurf von Links:
C ++ 11 (+ redaktionelle Korrekturen): N3337 HTML , PDF
C ++ 14 (+ redaktionelle Korrekturen): N4140 HTML , PDF
C11 N1570 ( Text )
C99 N1256
quelle
Möglicherweise ist der Entwurf eines internationalen Standards für C ++ 0x hilfreich.
quelle
ISO-Standards kosten Geld, von einem moderaten Betrag (für eine PDF-Version) bis zu etwas mehr (für eine Buchversion).
Obwohl sie noch nicht fertiggestellt sind, können sie normalerweise online als Entwürfe gefunden werden. In den meisten Fällen unterscheidet sich die endgültige Version nicht wesentlich vom letzten Entwurf. Obwohl sie nicht perfekt ist, passen sie gut.
quelle
Die Standards C99 und C ++ 03 sind in Buchform bei Wiley erhältlich:
Wie bereits erwähnt, ist der Arbeitsentwurf für künftige Standards häufig auf den Websites der Ausschüsse verfügbar:
Der C-201x-Entwurf ist als N1336 und der C ++ 0x-Entwurf als N3225 verfügbar .
quelle
Die ISO C- und C ++ - Standards sind verdammt teuer. Auf der anderen Seite veröffentlicht die INCITS sie für viel weniger neu. http://www.techstreet.com/ scheint das PDF für 30 US-Dollar zu haben (Suche nach INCITS / ISO / IEC 14882: 2003).
Hardcopy-Versionen sind ebenfalls verfügbar. Suchen Sie nach den von Wiley veröffentlichten Versionen des British Standards Institute.
quelle
Die tatsächlichen Standarddokumente sind möglicherweise nicht die nützlichsten. Die meisten Compiler implementieren die Standards nicht vollständig und können manchmal tatsächlich zu Konflikten führen. Die Compiler-Dokumentation, die Sie bereits haben würden, ist also nützlicher. Darüber hinaus enthält die Dokumentation plattformspezifische Anmerkungen und Hinweise zu eventuellen Einschränkungen.
quelle
Der Text eines Entwurfs des ANSI C-Standards (auch bekannt als C.89) ist online verfügbar. Dies wurde vom ANSI-Komitee vor der Annahme durch den ISO C-Standard (C.90) standardisiert, sodass die Nummerierung der Abschnitte unterschiedlich ist (ANSI-Abschnitte 2 bis 4 entsprechen ungefähr den ISO-Abschnitten 5 bis 7), obwohl der Inhalt (angenommen) ist weitgehend identisch sein.
quelle
[0, 60]
, während C90 (falsch)[0, 61]
tm_sec
gibt dies an(0, 61)
. Ich dachte das wäre für Schaltsekunden, macht Sinn.Obwohl dies kein tatsächlicher Standard ist, gibt es eine Änderung an ISO C (C89 / 90) namens C94 / 95 oder Normative Addendum 1. Sie wurde in C99 integriert, obwohl einige Compiler wie Clang es Ihnen ermöglichen, in
-std=c94
der Befehlszeile anzugeben . ISO / IEC 9899: 1990 / Amd 1: 1995 kann bei SAI GLOBAL (PDF oder Hardcopy) zu einem hohen Preis erworben werden .Eine Zusammenfassung des Dokuments finden Sie hier .
quelle
http://c0x.coding-guidelines.com/ enthält eine durchsuchbare, HTML-basierte Version des C-Standards. Eigentlich eine leicht modifizierte Version:
quelle