Где я могу найти текущие стандартные документы C или C++?
На многие вопросы ответ, кажется, находится в "стандарте". Однако, где мы находим это? Желательно онлайн.
Поиск в Google иногда может показаться бесполезным, особенно для стандартов C, так как они тонут в потоке дискуссий на форумах по программированию.
Для начала, так как это те, которые я ищу прямо сейчас, где есть хорошие онлайн-ресурсы для:
- C89
- C99
- C11
- С ++ 98
- C++ 03
- C++ 11
- C++ 14
12 ответов
PDF версии стандарта
По состоянию на 1 сентября 2014 года лучшими местоположениями по цене для документов стандартов C и C++ в формате PDF являются:
- C++ 17 - ISO / IEC 14882: 2017: $ 116 от ansi.org
- C++ 14 - ISO/IEC 14882:2014: 90 новозеландских долларов (около 60 долларов США) от стандартов Новой Зеландии
- C++11 - ISO/IEC 14882:2011:
60 долларов США от ansi.org60 долларов США от Techstreet - C++03 - ISO 14882:2003:
30 долларов США от ansi.org48 долларов США от SAI Global C++ 98 - ISO/IEC 14882:1998: 90 новозеландских долларов (около 60 долларов США) от стандартов Новой Зеландии
C17/C18 - ISO / IEC 9899: 2018: $ 232 от черновика ansi.org / N2176 / c17_updated_proposed_fdis.pdf от ноября 2017 года (ссылка не работает, см. Wayback Machine N2176)
- C11 - ISO/IEC 9899:2011:
30$ 60 $ от ansi.org / WG14 черновая версия N1570 - C99 - ISO 9899:1999:
30долл. США 60долл.США от ansi.org / WG14, черновая версия N1256 - C90 - AS 3955-1991:
$ 141 от ansi.org$ 175 от Techstreet (австралийская версия C90, идентичная ISO 9899:1990) - C90 - 9899:1990 Печатная копия доступна от SAI Global ($88 + доставка)
Обычно вы не можете получить старые версии стандарта (любого стандарта) непосредственно от органов по стандартизации вскоре после выпуска новой версии стандарта. Таким образом, стандарты для C89, C90, C99, C++98, C++03 будет трудно найти для приобретения у органа по стандартизации. Если вам нужна старая версия стандарта, проверьте Techstreet как один из возможных источников. Например, он все еще может предоставить канадскую версию стандарта CAN/CSA-ISO/IEC 9899:1990 в формате PDF за плату.
Электронные версии стандарта без PDF
- C89 - Черновая версия в текстовом формате ANSI: ( https://web.archive.org/web/20161223125339/http://flash-gordon.me.uk/ansi.c.txt)
- С90 ТС1; ISO/IEC 9899 TCOR1, одностраничный документ HTML: ( http://www.open-std.org/jtc1/sc22/wg14/www/docs/tc1.htm)
- С90 ТС2; ISO/IEC 9899 TCOR2, одностраничный документ HTML: ( http://www.open-std.org/jtc1/sc22/wg14/www/docs/tc2.htm)
Печатные версии стандарта
Печатные копии стандартов можно получить в национальных органах по стандартизации и ISO, но они очень дороги.
Если вам нужна бумажная копия стандарта C90 за гораздо меньшие деньги, чем указанная выше, вы можете найти дешевую использованную копию книги Херба Шильдта " Аннотированный стандарт ANSI" на Amazon, в которой содержится фактический текст стандарта (полезно). и комментарий к стандарту (менее полезный).
Стандарты C99 и C++03 доступны в виде книг от Wiley и BSI (Британский институт стандартов):
- Стандарт C++03 на Amazon
- Стандарт С99 на Амазоне
Черновые версии комитета по стандартам
Рабочий проект будущих стандартов часто доступен на веб-сайтах комитета:
Обратите внимание, что эти документы не совпадают со стандартом, хотя версии непосредственно перед заседаниями, на которых принимается решение о стандарте, обычно очень близки к тому, что содержится в окончательном стандарте. Версии FCD (финального комитета) защищены паролем; Вы должны быть в комитете по стандартам, чтобы получить их.
Однако, по моему мнению, даже несмотря на то, что черновые версии могут быть очень близки к окончательно утвержденным версиям стандартов, вам действительно следует получить копию фактических документов, особенно если вы планируете указывать их в качестве ссылок. Конечно, голодающие студенты должны идти вперед и использовать шашки, если они привязаны к деньгам.
Похоже, что если вы готовы и можете подождать несколько месяцев после ратификации стандарта, поиск "INCITS/ISO/IEC" вместо "ISO/IEC", когда поиск стандарта является ключевым. Таким образом, я смог найти стандарт C++11 по разумной цене, а теперь и стандарт C11. Итак, в качестве примера вы ищете "INCITS/ISO/IEC 9899:2011" вместо "ISO/IEC 9899:2011" на http://webstore.ansi.org/, и вы найдете версию PDF по разумной цене.
Сайт https://wg21.link/ содержит ссылки на короткие URL-адреса на текущий рабочий проект C++ и проекты стандартов, а также документы комитета:
- https://wg21.link/std11 - C++11
- https://wg21.link/std14 - C++ 14
- https://wg21.link/std17 - C++ 17
- https://wg21.link/std - текущий рабочий проект
Онлайн версии стандарта можно найти:
Рабочий проект, стандарт для языка программирования C++
Следующие все черновые версии стандарта:
Все последующее свободно скачивается
2018-02-12: N4727 Git
2017-11-27: N4713 Git
2017-10-16: N4700 Git
2017-07-30: N4687 git
Кажется, это новый стандарт:
Эта версия требует аутентификации
2017-03-21: N4660 - проект стандарта C++17
Следующие все черновые версии стандарта:
Все последующее свободно скачивается
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
Кажется, это старый стандарт C++14:
Эта версия требует аутентификации
2014-10-07: N4140 git Essentially C++14 с исправленными незначительными ошибками и опечатками
2014-09-02: N4141 git Standard C++14
2014-03-02: N3937
2014-03-02: N3936 git
Следующие все черновые версии стандарта:
Все последующее свободно скачивается
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 с исправленными незначительными ошибками и опечатками
Похоже, это старый стандарт C++11:
Эта версия требует аутентификации
2011-04-05: N3291 C++11 (или очень близко)
Следующие все черновые версии стандарта:
Все последующее свободно скачивается
2011-02-28: N3242 (отличия от N3291 очень незначительные)
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
Кажется, это старый стандарт C++03:
Все приведенные ниже версии требуют аутентификации
2004-11-05: N1733
2004-07-16: N1655 Неофициальный
2004-02-07: N1577 C++03 (или очень близко)
2001-09-13: проект расширенного технического исправления N1316
1997-00-00: проект расширенного технического исправления N1117
Следующие все черновые версии стандарта:
Все последующее свободно скачивается
1996-00-00: N0836 Проект расширенного технического исправления
1995-00-00: N0785 Рабочий документ для проекта предлагаемого международного стандарта для информационных систем - язык программирования C++
Другие интересные документы:
C99 доступен онлайн. Цитируется с www.open-std.org:
Последней общедоступной версией стандарта является комбинированный C99 + TC1 + TC2 + TC3, WG14 N1256, датированный 2007-09-07. Это рабочий документ WG14, но он отражает консолидированный стандарт на момент выпуска.
Черновики ссылок:
C++ 11 (+ редакционные исправления): N3337 HTML, PDF
C++ 14 (+ редакционные исправления): N4140 HTML, PDF
C99 N1256
Проекты Стандарта распространяются для комментариев до ратификации и публикации.
Обратите внимание, что рабочий проект не является стандартом, действующим в настоящее время, и это не совсем опубликованный стандарт.
Может оказаться полезным проект международного стандарта для C++0x.
Стандарты ISO стоят денег, от умеренной суммы (для PDF-версии), до немного больше (для книжной версии).
Хотя они и не доработаны, их обычно можно найти в Интернете в виде черновиков. В большинстве случаев окончательная версия не отличается значительно от предыдущего проекта, поэтому, хотя она и не идеальна, они отлично подойдут.
Текст проекта стандарта ANSI C (он же C.89) доступен онлайн. Это было стандартизировано комитетом ANSI до его принятия стандартом ISO C (C.90), поэтому нумерация разделов отличается (разделы 2–4 ANSI примерно соответствуют разделам 5–7 ISO), хотя содержание (предполагается быть) в значительной степени идентичны.
Стандарты ISO C и C++ чертовски дороги. С другой стороны, INCITS перепечатывает их намного дешевле. http://www.techstreet.com/ кажется, имеет PDF за 30 долларов (поиск по INCITS/ISO/IEC 14882:2003).
Версии в печатном виде также доступны. Ищите версии Британского института стандартов, опубликованные Wiley.
Актуальные нормативные документы могут быть не самыми полезными. Большинство компиляторов не полностью реализуют стандарты и иногда могут фактически конфликтовать. Так что документация компилятора, которая у вас уже есть, будет более полезной. Кроме того, документация будет содержать замечания по платформе и замечания по любым оговоркам.
Хотя это и не является действующим стандартом, существует поправка к ISO C (C89/90) под названием C94/95 или нормативное приложение 1. Оно было интегрировано в C99, хотя некоторые компиляторы, такие как Clang, позволяют указывать -std=c94
в командной строке. ISO/IEC 9899:1990/Amd 1:1995 можно приобрести по высокой цене в SAI GLOBAL (PDF или печатная копия).
Краткое содержание документа можно найти здесь.
Когда (затем проект) стандарта ANSI C рассматривался вопрос о принятии международного стандарта в 1990 году, было несколько возражений, поскольку он не затрагивал вопросы интернационализации. Поскольку Стандарт уже был в разработке несколько лет, было решено, что будет сделано несколько изменений для обеспечения основы (например, были добавлены функции в подпункте 7.10.7), и работа будет выполняться отдельно для обеспечения правильная интернационализация стандарта. Эта работа завершилась нормативным дополнением 1.
Нормативное Дополнение 1 отражает реакцию C на ограничения и обещания международных наборов символов. Диграфы и заголовок предназначались для улучшения внешнего вида программ на C, написанных в национальных вариантах ISO 646 без, например, символов {или}. На другом конце спектра средства, связанные с едва уловимой основой старого стандарта, и расширяют ее до полного и согласованного набора утилит для обработки широких символов и многобайтовых строк.
В этом документе кратко изложено нормативное приложение 1. Он предназначен для быстрого информирования читателей, которые уже знакомы со стандартом; он не представляет и не может представить сложную тему, стоящую за NA1, и не может заменить оригинальный документ в качестве справочного руководства. (Тем не менее, он пытается быть максимально точным, и его автор хотел бы услышать о любых ошибках или упущениях.)
http://c0x.coding-guidelines.com/ содержит доступную для поиска версию стандарта C на основе HTML. Собственно, слегка модифицированная версия:
Этот веб-сайт содержит измененную версию N1256. Он включает формулировку, которая была удалена из C99 (то есть в вычеркнутой форме) и формулировку, которая раньше использовалась в C99 (то есть в подчеркнутой форме).