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


394

На многие вопросы ответ, кажется, находится в «стандарте». Однако где мы можем найти это? Желательно онлайн.

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

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

  • C89
  • C99
  • C11
  • С ++ 98
  • C ++ 03
  • C ++ 11
  • C ++ 14
  • C ++ 17

4
Обратите внимание на обсуждение MSO . Ответы на этот вопрос ценны для программистов на C и C ++; его следует оставить открытым (не в последнюю очередь потому, что существует стандарт C ++ 2014, который можно добавить к ответам, как только он будет опубликован - он уже утвержден).
Джонатан Леффлер

Ответы:


439

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 (Британский институт стандартов):

Черновые версии комитета по стандартам (бесплатно)

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

Если вы хотите получить черновики от текущих или более ранних стандартов C / C ++, есть некоторые бесплатные в Интернете:

Для C:

Для C ++:

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

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


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


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


Текущий проект стандарта поддерживается как источники LaTeX на Github . Эти источники могут быть преобразованы в HTML с помощью cxxdraft-htmlgen . Следующие сайты поддерживают сгенерированные HTML-страницы:

Тим Сонг также поддерживает созданные HTML и PDF версии Networking TS и Ranges TS.


60
Проблема с книгой Шильдта состоит в том, что его комментарии сильно обесценивают стандарт, который он комментирует.
ВОО

57
Очень плохая книжная рекомендация (Херб Шильдтс), смотрите это: lysator.liu.se/c/schildt.html
Wiz

11
Я знаю об обзоре - я упоминаю книгу только как возможный способ получить стандарт очень недорого. Но я полагаю, что люди должны знать и об обзоре. Я бы посоветовал просто проигнорировать аннотационную часть книги, если вам нужна недорогая стандартная печатная копия (это то, что я делаю).
Майкл Барр

37
Книга Шильдта (которая, я думаю, вышла из печати) была намного дешевле, чем печатная копия действующего стандарта. Предполагается, что разница в ценах отражает значение аннотаций. Каждый экземпляр книги должен сопровождаться распечаткой «Аннотированный аннотированный стандарт C» Клайва Д. У. Пера . (Обратите внимание, что некоторые вводные материалы отсутствуют в книге Шильдта.)
Кит Томпсон

12
@MichaelBurr, все стандарты можно найти бесплатно на www.open-std.org, так как у вас есть принятый ответ, как насчет изменения ссылок на бесплатные?
Шахбаз

429

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

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

Следующие все черновые версии стандарта :
Все нижеперечисленное можно загрузить бесплатно
(многие из них можно найти по этой основной ссылке GitHub )
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 мерзавец
2018-04-02: N4741 мерзавец
2018-02-12: N4727 мерзавец
2017-11-27: N4713 мерзавец
2017-10-16: N4700 мерзавец
2017-07-30: N4687 мерзавца

Похоже, это новый стандарт: для
этой версии требуется аутентификация
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 По существу C ++ 14 с исправленными незначительными ошибками и опечатками 2014-09-02
: N4141 git Стандарт 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 По существу 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 Проект Expanded технических опечаток
1997-00-00: N1117 Проект Expanded Техническое исправление

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

Другие интересные документы:

2020 / 2019 / 2018 / 2017 / +2016 / 2 015 / +2014 / 2013 / 2 012 / 2 011


1
Вы можете упомянуть, к какому стандарту ссылки ведут вас! Также добавляется стандарт C11: open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
Шахбаз,

@ Shahbaz: я не знаком со всеми копиями стандарта C (поскольку я не пишу код C (только C ++)). Вы можете начать свой собственный ответ или отредактировать один из приведенных ниже ответов, который явно касается языка Си (см. Тот, что ниже).
Мартин Йорк,

17
+1 за ведение списка, который постоянно обновляется, чем даже рабочая группа ИСО 21 .
Лундин

5
+1 за список; только чтобы добавить, что все черновики доступны как репозиторий git github.com/cplusplus/draft . Вы можете добавить ссылку на isocpp.org/std/the-standard
pepr

@ShafikYaghmour: Похоже, что они заблокировали его (что обычно означает его официальный выпуск). Я обновил со ссылками на версию, которая требует аутентификации (т.е. вы заплатили за это).
Мартин Йорк,

64

C99 доступен онлайн . Цитируется с www.open-std.org :

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


26

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

C ++ 11 (+ редакционные исправления): N3337 HTML , PDF

C ++ 14 (+ редакционные исправления): N4140 HTML , PDF

C11 N1570 ( текст )

C99 N1256

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

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


Ссылка «N1169» ведет к четырехстраничному документу, содержащему несколько отчетов об ошибках. Это ни в каком смысле не является проектом стандарта C ++ (или любого другого).
Гарет МакКоган

Мне нравится этот ответ, потому что он разъясняет, какой проект является самым последним для каждого основного выпуска.
Сиро Сантилли 郝海东 冠状 病 六四 事件 法轮功


12

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

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


7

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

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

Черновик C-201x доступен как N1336 , а черновой вариант C ++ 0x - N3225 .


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

4

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

Версии в печатном виде также доступны. Ищите версии Британского института стандартов, опубликованные Wiley.


В настоящее время techstreet.com имеет стандарт C ++ 2003 в формате PDF за 30 долларов США и стандарт C ++ 2011 за 403 доллара США.
Кит Томпсон

Большое спасибо за ссылку на Techstreet. Интернет-магазин ANSI.org не продаст мне стандарт C11 (отказ от кредитной карты по соображениям «безопасности», т. Е. Без веских причин), в то время как покупка в Techstreet по эквивалентной цене (с той же картой) прошла гладко и без устройство.
Арто Бендикен

4

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


24
Документация компилятора важна, но знание языка, а не знание вашей реализации - это гораздо больше.
Spidey

2
С действующим стандартом вы можете найти ошибки в компиляторах и помочь им лучше следовать стандарту, исправляя их, отправляя отчеты об ошибках или просто входя в комнату IRC и общаясь с кем-то, кто может это исправить.
Hdante

3
@hdante - абсолютно. Когда у вас есть сам стандарт в качестве идеального, вы можете требовать совместимости от поставщика. @ / all - здесь мы не хотели сказать, что стандарт бесполезен (к вашему сведению, переход от стандарта в первую очередь - это подход, который я использовал в прошлом), но вы также должны знать исходную точку своего реального мира, что, надеюсь, соответствует стандартам.
Крис Кумлер

6
В любом случае, документация компилятора не учитывает все, что указано в стандартах.
SamB

4

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


Это действительно последний проект? Единственное различие, которое мне известно, заключается в том, что этот черновик определяет диапазон tm_sec [0, 60], а C90 (неверно)[0, 61]
Cubbi

@ Кубби, так как я не могу лично доказать это, я изменил формулировку. Спасибо.
JXH

@ Кубби: он сказал, что это был последний проект стандарта ANSI . Похоже, что кто-то из рабочей группы ISO запутался и подумал, что возможные две високосные секунды в году могут случиться в / после одной и той же минуты ... Или они получили ошибку от POSIX, который не сказал, где он ее получил от, только то, что они исправили его, чтобы выровнять с C99.
SamB

K & R 2nd Ed. (ANSI C), который не основан на фактическом конечном стандарте, действительно указывает, что tm_secэто (0, 61). Я думал, что это было для високосных секунд, имеет смысл.
veganaiZe

@veganaiZe Диапазон составляет [0, 60], чтобы учесть дополнительные секунды (в противном случае это будет [0, 59]). [0, 61] была ошибка, означавшая, что было бы возможно иметь две високосные секунды в одну минуту (это не так).
Кит Томпсон,

2

Хотя это и не является действующим стандартом, существует поправка к 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, и не может заменить оригинальный документ в качестве справочного руководства. (Тем не менее, он старается быть максимально точным, и его автор хотел бы услышать о любых ошибках или упущениях.)


-6

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

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


2
Веб-сайт бесполезен, так как большинство страниц пустые.
Ниссе Энгстрем

Этот сайт действительно полная чушь.
MD XF
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.