Na wiele pytań odpowiedź wydaje się znajdować w „standardzie”. Gdzie to jednak znajdujemy? Najlepiej online.
Googling może czasem wydawać się daremny, szczególnie w przypadku standardów C, ponieważ tonie w zalewie dyskusji na forach programistycznych.
Aby rozpocząć, ponieważ są to te, których teraz szukam, gdzie są dobre zasoby online dla:
- C89
- C99
- C11
- C ++ 98
- C ++ 03
- C ++ 11
- C ++ 14
- C ++ 17
Odpowiedzi:
Wersje PDF standardu
Od 1 września 2014 r. Najlepszymi lokalizacjami pod względem ceny dla dokumentów w standardzie C i C ++ w formacie PDF są:
60 USD od ansi.org60 USDod Techstreet30 USD od ansi.org48 USD od SAI GlobalC ++ 98 - ISO / IEC 14882: 1998: 90 NZD (około 60 USD) z norm Nowej Zelandii
C17 / C18 - ISO / IEC 9899: 2018: 185 USD od SAI Global / 116 USD od INCITS / ANSI / N2176 / c17_updated_proposed_fdis.pdf projekt z listopada 2017 r. (Uszkodzony link, patrz Wayback Machine N2176 )
30USD 60 USD z ansi.org / WG14 wersja robocza N157030USD 60 USD z ansi.org / WG14 wersja robocza N1256141 USD od ansi.org175 USDod Techstreet(australijska wersja C90, identyczna z ISO 9899: 1990)Zwykle nie można uzyskać starych wersji standardu (dowolnego standardu) bezpośrednio od organów normalizacyjnych wkrótce po wydaniu nowej edycji standardu. Tak więc trudno będzie znaleźć standardy dla C89, C90, C99, C ++ 98, C ++ 03 w jednostce normalizacyjnej. Jeśli potrzebujesz starej wersji standardu, sprawdź Techstreet jako jedno z możliwych źródeł. Na przykład nadal może za opłatą udostępniać kanadyjską wersję standardu CAN / CSA-ISO / IEC 9899: 1990 w formacie PDF.
Wersje elektroniczne w formacie innym niż PDF
Wydrukuj wersje standardu
Wydrukowane kopie norm są dostępne w krajowych organach normalizacyjnych i ISO, ale są bardzo drogie.
Jeśli chcesz otrzymać wydruk standardu C90 za znacznie mniej pieniędzy niż powyżej, może być w stanie znaleźć tani używany egzemplarz Herb Schildt książki „s adnotacjami ANSI w Amazonii , która zawiera rzeczywistą treść standardu (przydatne) i komentarz do normy (mniej przydatny - zawiera kilka niebezpiecznych i wprowadzających w błąd błędów).
Standardy C99 i C ++ 03 są dostępne w formie książkowej od Wiley i BSI (British Standards Institute):
Wersje robocze komitetu norm (bezpłatne)
Robocze projekty przyszłych standardów są często dostępne na stronach internetowych komitetu:
Jeśli chcesz pobrać wersje robocze z obecnych lub wcześniejszych standardów C / C ++, niektóre są dostępne bezpłatnie w Internecie:
Dla C:
ANSI X3.159-198 (C89):
Nie mogę znaleźć pliku PDF C89, ale jest on prawie taki sam jak poniższy szkic dla ISO / IEC 9899: 1990 (C90). Jedyne różnice dotyczą płyty grzewczej i numeracji sekcji.
ISO / IEC 9899: 1990 (C90):
https://www.pdf-archive.com/2014/10/02/ansi-iso-9899-1990-1/ansi-iso-9899-1990-1.pdf
(Prawie takie same jak ANSI X3.159-198 (C89), z wyjątkiem nagłówka i numeracji sekcji. Uwaga: konwersja między ANSI i normą ISO / IEC jest widoczna w tym dokumencie, dokument odnosi się do jego nazwy jako „ANSI / ISO : 9899/99 ”, chociaż nie jest to właściwa nazwa późniejszego standardu, prawidłowa nazwa to„ 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)
Dla 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
Pamiętaj, że te dokumenty nie są takie same jak standard, chociaż wersje tuż przed spotkaniami, które decydują o standardzie, są zwykle bardzo zbliżone do tego, co jest w ostatecznym standardzie. Wersje FCD (Final Committee Draft) są chronione hasłem; musisz być w komitecie normalizacyjnym, aby je zdobyć.
Mimo że wersje robocze mogą być bardzo zbliżone do ostatecznych ratyfikowanych wersji standardów, niektórzy redaktorzy tego postu zdecydowanie zalecają otrzymanie kopii faktycznych dokumentów - zwłaszcza jeśli planujesz cytować je jako odniesienia. Oczywiście głodni studenci powinni iść naprzód i korzystać z przeciągów, jeśli są przywiązani do gotówki.
Wygląda na to, że jeśli jesteś gotów i możesz poczekać kilka miesięcy po ratyfikacji normy, wyszukiwanie „INCITS / ISO / IEC” zamiast „ISO / IEC” w poszukiwaniu normy jest kluczem. W ten sposób jeden z redaktorów tego posta był w stanie znaleźć standardy C11 i C ++ 11 w rozsądnych cenach. Na przykład, jeśli szukasz „INCITS / ISO / IEC 9899: 2011” zamiast „ISO / IEC 9899: 2011” na stronie webstore.ansi.org , znajdziesz wersję PDF w rozsądnej cenie.
Witryna https://wg21.link/ zawiera linki z krótkimi adresami URL do aktualnego roboczego projektu i standardów C ++ oraz dokumentów komitetu:
Obecny projekt standardu jest utrzymywany jako źródła LaTeX na Github . Te źródła można przekonwertować na HTML za pomocą cxxdraft-htmlgen . Następujące strony utrzymują tak wygenerowane strony HTML:
Tim Song utrzymuje również wygenerowane wersje HTML i PDF Networking TS i Ranges TS.
źródło
Wersje online standardu można znaleźć:
Projekt roboczy, standard języka programowania C ++
Następujące wszystkie wstępne wersje standardu :
Wszystkie poniższe można pobrać za darmo
(wiele z nich można znaleźć pod tym głównym linkiem GitHub )
2020-01-14: N4849 git
27.11.2019: N4842 git
08.10.2019: N4835 git
15.08.2019: N4830 git
17.06.2019: N4820 git
15.03.2019: N4810 git
01.01.2019: N4800 git
26.11.2018: N4791 git
08.10.2018: N4778 git
07.7.2018: N4762 git
2018-05-07:N4750 git
02.04.2018: N4741 git
12.02.2018: N4727 git
27.11.2017: N4713 git
16.10.2017: N4700 git
2017-07-30: N4687 git
Wygląda na to, że jest to nowy standard:
Ta wersja wymaga uwierzytelnienia 21.03.2017
: N4660 jest wersją roboczą C ++ 17
Następujące wszystkie wstępne wersje standardu :
Wszystkie następujące można bezpłatnie pobrać 21.03.2017
: N4659 git
2017-02-06: N4640 git 28.11.2016
: N4618 git
2016-07-12: N4606 git
2016-05 -30: N4594 git
19.03.2016: N4582 git 09.11.2015
: N4567 git
22.05.2015: N4527 git
04.04.2015: N4431 git
19.11.2014: N4296 git
Wygląda na to, że jest to stary standard C ++ 14 :
Te wersje wymagają uwierzytelnienia
2014-10-07: N4140 git Zasadniczo C ++ 14 z drobnymi błędami i literówkami poprawionymi 02.09.2014
: N4141 git Standard C ++ 14
2014- 03-02: N3937
2014-03-02: N3936 git
Następujące wszystkie wstępne wersje normy :
Wszystkie następujące można bezpłatnie pobrać
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 Zasadniczo C ++ 11 z drobnymi błędami i literówkami poprawionymi
Wygląda na to, że jest to stary standard C ++ 11 :
Ta wersja wymaga uwierzytelnienia
2011-04-05: N3291 C ++ 11 (lub bardzo blisko)
Następujące wszystkie wstępne wersje normy :
Wszystkie następujące można bezpłatnie pobrać 28.02.2011
: N3242 (różnice w stosunku do N3291 bardzo niewielkie)
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
Wygląda na to, że jest to stary standard C ++ 03:
Wszystkie poniższe wersje wymagają uwierzytelnienia
2004-11-05: N1733
2004-07-16: N1655 Nieoficjalne
2004-02-07: N1577 C ++ 03 (lub bardzo blisko)
2001 -09-13: N1316 Projekt rozszerzonej sprostowania technicznego
1997-00-00: N1117 Projekt rozszerzonej sprostowania technicznego
Wszystkie następujące wersje standardu :
Wszystkie następujące elementy można bezpłatnie pobrać
1996-00-00: N0836 Projekt rozszerzonej sprostowania technicznego
1995-00-00: N0785 Dokument roboczy dotyczący projektu proponowanej międzynarodowej normy dla systemów informatycznych - Język programowania C ++
Inne ciekawe dokumenty:
2020 / +2.019 / 2.018 / wykupu w 2017 r / 2016 / +2.015 / 2014 / 2013 / +2.012 / 2011
źródło
C99 jest dostępny online . Cytat z www.open-std.org :
źródło
Projekty linków:
C ++ 11 (+ poprawki redakcyjne): N3337 HTML , PDF
C ++ 14 (+ poprawki redakcyjne): N4140 HTML , PDF
C11 N1570 ( tekst )
C99 N1256
źródło
Może okazać się przydatny projekt międzynarodowego standardu dla C ++ 0x.
źródło
Normy ISO kosztują pieniądze, od umiarkowanej kwoty (dla wersji PDF), do nieco więcej (dla wersji książkowej).
Chociaż nie są one sfinalizowane, zwykle można je znaleźć w Internecie, jako wersje robocze. W większości przypadków ostateczna wersja nie różni się znacząco od ostatniego szkicu, więc choć nie są idealne, będą dobrze pasować.
źródło
Standardy C99 i C ++ 03 są dostępne w formie książkowej od Wiley:
Ponadto, jak już wspomniano, projekt roboczy przyszłych standardów jest często dostępny na stronach internetowych komitetu:
Szkic C-201x jest dostępny jako N1336 , a szkic C ++ 0x jako N3225 .
źródło
Standardy ISO C i C ++ są cholernie drogie. Z drugiej strony INCITS publikuje je za znacznie mniej. Wydaje się, że http://www.techstreet.com/ ma plik PDF za 30 USD (wyszukaj INCITS / ISO / IEC 14882: 2003).
Dostępne są również wersje papierowe. Poszukaj wersji British Standards Institute, opublikowanych przez Wiley.
źródło
Faktyczne standardy dokumentów mogą nie być najbardziej przydatne. Większość kompilatorów nie wdraża w pełni standardów i czasami może faktycznie powodować konflikty. Tak więc dokumentacja kompilatora, którą już posiadasz, będzie bardziej przydatna. Dodatkowo dokumentacja będzie zawierać uwagi i uwagi dotyczące platformy dotyczące wszelkich zastrzeżeń.
źródło
Tekst projektu normy ANSI C (aka C.89) jest dostępny online. Zostało to znormalizowane przez komitet ANSI przed zaakceptowaniem przez normę ISO C (C.90), więc numeracja sekcji różni się (sekcje ANSI 2 do 4 odpowiadają mniej więcej sekcjom ISO 5 do 7), chociaż treść jest (przypuszczalnie być) w dużej mierze identyczne.
źródło
[0, 60]
, podczas gdy C90 (niepoprawnie)[0, 61]
tm_sec
jest(0, 61)
. Pomyślałem, że to przez sekundę przestępną, ma sens.Chociaż nie jest to rzeczywisty standard, istnieje poprawka do ISO C (C89 / 90) o nazwie C94 / 95 lub Normative Addendum 1. Został on zintegrowany z C99, chociaż niektóre kompilatory, takie jak Clang, pozwalają
-std=c94
na specyfikację w wierszu poleceń. ISO / IEC 9899: 1990 / Amd 1: 1995 można kupić za wysoką cenę w SAI GLOBAL (PDF lub wersja papierowa).Podsumowanie dokumentu można znaleźć tutaj .
źródło
http://c0x.coding-guidelines.com/ zawiera przeszukiwalną, opartą na HTML wersję standardu C. W rzeczywistości nieco zmodyfikowana wersja:
źródło