Где я могу найти текущие стандартные документы C или C ++?

375

По многим вопросам ответ, похоже, встречается в "стандарте". Однако, где мы находим это? Предпочтительно онлайн.

Google может иногда казаться бесполезным, особенно в отношении стандартов C, поскольку они утоплены в результате дискуссий на форумах программирования.

Чтобы начать работу, так как это те, которые я ищу прямо сейчас, где есть хорошие онлайн-ресурсы для:

  • C89
  • C99
  • C11
  • С++ 98
  • С++ 03
  • С++ 11
  • С++ 14
  • 4
    Обратите внимание на обсуждение MSO . Ответы на этот вопрос ценны для программистов на C и C ++; его следует оставить открытым (не в последнюю очередь потому, что существует стандарт C ++ 2014, который можно добавить к ответам, как только он будет опубликован - он уже утвержден).
Теги:
standards
c++-faq

12 ответов

369
Лучший ответ

PDF версии стандарта

По состоянию на 1 сентября 2014 года лучшими местоположениями по цене для документов стандартов C и C++ в формате PDF являются:

Обычно вы не можете получить старые версии стандарта (любого стандарта) непосредственно от органов по стандартизации вскоре после выпуска новой редакции стандарта. Таким образом, стандарты для C89, C90, C99, C++ 98, C++ 03 будет трудно найти для приобретения у органа по стандартизации. Если вам нужна старая версия стандарта, проверьте Techstreet как один из возможных источников. Например, он все еще может предоставить канадскую версию стандарта CAN/CSA-ISO/IEC 9899: 1990 в формате PDF за плату.

Электронные версии стандарта без PDF

Печатные версии стандарта

Печатные копии стандартов можно получить в национальных органах по стандартизации и ISO, но они очень дороги.

Если вам нужна бумажная копия стандарта C90 за гораздо меньшие деньги, чем указанная выше, вы можете найти дешевую использованную копию книги Херба Шильдта "Аннотированный стандарт ANSI" на Amazon, которая содержит фактический текст стандарта (полезный) и комментарий по стандарту (менее полезно).

Стандарты C99 и C++ 03 доступны в виде книг от Wiley и BSI (Британский институт стандартов):

Черновые версии комитета по стандартам

Рабочий проект будущих стандартов часто доступен на веб-сайтах комитета:

Обратите внимание, что эти документы не совпадают со стандартом, хотя версии непосредственно перед заседаниями, на которых принимается решение о стандарте, обычно очень близки к тому, что содержится в окончательном стандарте. Версии FCD (финального комитета) защищены паролем; Вы должны быть в комитете по стандартам, чтобы получить их.

Однако, по моему мнению, даже несмотря на то, что черновые версии могут быть очень близки к окончательно утвержденным версиям стандартов, вам действительно следует получить копию фактических документов, особенно если вы планируете указывать их в качестве ссылок. Конечно, голодающие студенты должны идти вперед и использовать шашки, если они привязаны к деньгам.


Похоже, что если вы готовы и можете подождать несколько месяцев после ратификации стандарта, поиск "INCITS/ISO/IEC" вместо "ISO/IEC", когда поиск стандарта является ключевым. Таким образом, я смог найти стандарт C++ 11 по разумной цене, а теперь и стандарт C11. Итак, в качестве примера вы ищете "INCITS/ISO/IEC 9899: 2011" вместо "ISO/IEC 9899: 2011" на webstore.ansi.org, и вы найдете версию PDF по разумной цене.


Сайт https://wg21.link/ содержит ссылки на короткие URL-адреса на текущий рабочий проект C++ и проекты стандартов, а также документы комитета:

  • 53
    Проблема с книгой Шильдта состоит в том, что его комментарии сильно обесценивают стандарт, который он комментирует.
  • 51
    Очень плохая рекомендация книги (Херб Шильдтс), смотрите это: lysator.liu.se/c/schildt.html
Показать ещё 30 комментариев
417

Онлайн-версии стандарта можно найти:

Рабочий проект, стандарт для языка программирования С++

Следующие черновики версии стандарта:
Все следующие свободно загружаемые
2018-02-12: N4727 git
2017-11-27: N4713 git
2017-10-16: N4700 git
2017-07-30: N4687 git

Это, по-видимому, новый стандарт:
Для этой версии требуется аутентификация
2017-03-21: N4660 - это стандартный проект С++ 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

Это, по-видимому, старый стандарт С++ 14:
Для этой версии требуется аутентификация
2014-10-07: N4140 git По существу С++ 14 с незначительными ошибками и опечатками, скорректированными
2014-09-02: N4141 git Стандартный С++ 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 По существу С++ 11 с незначительными ошибками и опечатками исправлены

Это похоже на старый стандарт С++ 11:
Эта версия требует аутентификации
2011-04-05: N3291 С++ 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

Это, по-видимому, старый стандарт С++ 03:
Все приведенные ниже версии требуют аутентификации
2004-11-05: N1733
2004-07-16: N1655 Неофициальный
2004-02-07: N1577 С++ 03 (или очень близко)
2001-09-13: N1316 Проект расширенного технического исправления
1997-00-00: N1117 Проект расширенного технического исправления

Следующие черновики версии стандарта:
Все следующие свободно загружаемые
1996-00-00: N0836 Проект расширенного технического исправления
1995-00-00: N0785 Рабочий документ для проекта предлагаемого международного стандарта для информационных систем - язык программирования С++

Другие интересные статьи:

2018/ 2017/ 2016/ 2015/ 2014/ 2013/ 2012/ 2011

  • 1
    Вы можете упомянуть, к какому стандарту ссылки ведут вас! Также добавляем стандарт C11: open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
  • 0
    @Shahbaz: я не знаком со всеми копиями стандарта C (поскольку я не пишу код C (только C ++)). Возможно, вы захотите начать свой собственный ответ или отредактировать один из ответов ниже, который явно касается языка Си (см. Тот, что ниже).
Показать ещё 18 комментариев
63

C99 доступен в Интернете. Цитируется из www.open-std.org:

Самая последняя общедоступная версия стандарта - это объединенный C99 + TC1 + TC2 + TC3, WG14 N1256 от 2007-09-07. Это рабочий документ WG14, но он отражает консолидированный стандарт на время выпуска.

22

Черновики ссылок:

С++ 11 (исправления +editorial): N3337 HTML, PDF

С++ 14 (исправления +editorial): N4140 HTML, PDF

C11 N1570 (текст)

C99 N1256

Проекты Стандарта распространяются для комментариев до ратификации и публикации.

Обратите внимание, что рабочий проект не является стандартом, действующим в настоящее время, и это не совсем опубликованный стандарт.

  • 0
    Ссылка «N1169» ведет к четырехстраничному документу, содержащему несколько отчетов об ошибках. Это ни в каком смысле не является проектом стандарта C ++ (или любого другого).
  • 0
    спасибо за указание на это ... я отменил ссылку ...
Показать ещё 1 комментарий
12

Вы можете найти проект международного стандарта для полезного использования С++ 0x.

9

Стандарты ИСО стоят денег, от умеренной суммы (для версии PDF), немного больше (для книжной версии).

Хотя они еще не завершены, их обычно можно найти в Интернете, как черновики. В большинстве случаев окончательная версия не отличается значительно от последнего черновика, поэтому, хотя она не идеальна, они будут соответствовать только штрафу.

6

Стандарты C99 и С++ 03 доступны в виде книги от Wiley:

Плюс, как уже упоминалось, рабочий проект для будущих стандартов часто доступен на веб-сайтах комитета:

Проект C-201x доступен как N1336, а проект С++ 0x как N3225.

  • 1
    Просто заметка о печатной версии для стандарта C от Wiley: это стандарт C99, а не C89 / 90.
3

Текст проекта стандарта ANSI C (aka C.89) доступен в Интернете. Это было стандартизировано комитетом ANSI до принятия стандартом ISO C (C.90), поэтому нумерация разделов отличается (разделы ANSI с 2 по 4 соответствуют примерно разделам с 5 по 7 ISO), хотя содержание (предположительно быть) в значительной степени идентичны.

  • 0
    Это действительно последний проект? Одно известное мне отличие состоит в том, что этот черновик определяет диапазон tm_sec, который должен быть [0, 60] , а C90 (неверно) [0, 61]
  • 0
    @ Кубби, так как я не могу лично доказать это, я изменил формулировку. Благодарю.
Показать ещё 3 комментария
3

Фактические документы стандартов могут быть не самыми полезными. Большинство компиляторов не полностью реализуют стандарты и иногда могут конфликтовать. Таким образом, документация компилятора, которую вы уже получили, будет более полезна. Кроме того, в документации будут содержаться замечания и примечания, относящиеся к платформе, для любых оговорок.

  • 24
    Документация компилятора важна, но знание языка, а не знание вашей реализации - это гораздо больше.
  • 2
    С действующим стандартом вы можете найти ошибки в компиляторах и помочь им лучше следовать стандарту, исправив их, отправив отчеты об ошибках или просто войдя в комнату IRC и поговорив с кем-то, кто может это исправить.
Показать ещё 2 комментария
3

Стандарты ISO C и С++ являются дорогостоящими. С другой стороны, INCITS переиздает их намного меньше. http://www.techstreet.com/, похоже, имеет PDF за 30 $ (поиск INCITS/ISO/IEC 14882: 2003).

Доступны и печатные версии. Посмотрите на версии Британского института стандартов, опубликованные Wiley.

  • 0
    В настоящее время techstreet.com имеет стандарт C ++ 2003 в формате PDF за 30 долларов США и стандарт C ++ 2011 за 403 доллара США.
  • 0
    Большое спасибо за ссылку на Techstreet. Интернет-магазин ANSI.org не продаст мне стандарт C11 (отказ от кредитной карты по соображениям «безопасности», т. Е. Без веских причин), в то время как покупка в Techstreet по эквивалентной цене (с той же картой) прошла гладко и без устройство.
1

Хотя это не настоящий стандарт, есть поправка к 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 как на ограничения, так и на promises международных наборов символов. Диграфы и заголовок должен был улучшить внешний вид программ на C, написанных на национальные варианты ISO 646 без, например, {или} символов. На другой конец спектра, объекты, подключенные к  распространять старый Стандарт едва адекватно в полный и последовательный набор утилит для обработки широких символов и многобайтовые строки.

В этом документе обобщается нормативное дополнение 1. Оно предназначено для быстро информировать читателей, которые уже знакомы со Стандартом; Это не может и не может ввести сложный предмет за NA1, а также не может заменить оригинальный документ в качестве справочного руководства. (Тем не менее, он пытается быть максимально точным, а его автор хотел бы услышать о любых ошибках или упущениях.)

-5

http://c0x.coding-guidelines.com/ содержит стандартную версию стандарта C на основе HTML. Собственно, слегка измененная версия:

Этот веб-сайт содержит модифицированную версию N1256. Оно включает формулировка, которая была удалена с C99 (т.е. в пробитой форме) и формулировка, которая раньше отображалась на C99 (то есть в подчеркнутом форма).

  • 1
    Веб-сайт бесполезен, так как большинство страниц пустые.
  • 0
    Этот сайт действительно полная чушь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню