По многим вопросам ответ, похоже, встречается в "стандарте". Однако, где мы находим это? Предпочтительно онлайн.
Google может иногда казаться бесполезным, особенно в отношении стандартов C, поскольку они утоплены в результате дискуссий на форумах программирования.
Чтобы начать работу, так как это те, которые я ищу прямо сейчас, где есть хорошие онлайн-ресурсы для:
По состоянию на 1 сентября 2014 года лучшими местоположениями по цене для документов стандартов C и C++ в формате PDF являются:
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)
Обычно вы не можете получить старые версии стандарта (любого стандарта) непосредственно от органов по стандартизации вскоре после выпуска новой редакции стандарта. Таким образом, стандарты для C89, C90, C99, C++ 98, C++ 03 будет трудно найти для приобретения у органа по стандартизации. Если вам нужна старая версия стандарта, проверьте Techstreet как один из возможных источников. Например, он все еще может предоставить канадскую версию стандарта CAN/CSA-ISO/IEC 9899: 1990 в формате 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++ и проекты стандартов, а также документы комитета:
Онлайн-версии стандарта можно найти:
Следующие черновики версии стандарта:
Все следующие свободно загружаемые
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 Рабочий документ для проекта предлагаемого международного стандарта для информационных систем - язык программирования С++
C99 доступен в Интернете. Цитируется из www.open-std.org:
Самая последняя общедоступная версия стандарта - это объединенный C99 + TC1 + TC2 + TC3, WG14 N1256 от 2007-09-07. Это рабочий документ WG14, но он отражает консолидированный стандарт на время выпуска.
Черновики ссылок:
С++ 11 (исправления +editorial): N3337 HTML, PDF
С++ 14 (исправления +editorial): N4140 HTML, PDF
C99 N1256
Проекты Стандарта распространяются для комментариев до ратификации и публикации.
Обратите внимание, что рабочий проект не является стандартом, действующим в настоящее время, и это не совсем опубликованный стандарт.
Вы можете найти проект международного стандарта для полезного использования С++ 0x.
Стандарты ИСО стоят денег, от умеренной суммы (для версии PDF), немного больше (для книжной версии).
Хотя они еще не завершены, их обычно можно найти в Интернете, как черновики. В большинстве случаев окончательная версия не отличается значительно от последнего черновика, поэтому, хотя она не идеальна, они будут соответствовать только штрафу.
Стандарты C99 и С++ 03 доступны в виде книги от Wiley:
Плюс, как уже упоминалось, рабочий проект для будущих стандартов часто доступен на веб-сайтах комитета:
Проект C-201x доступен как N1336, а проект С++ 0x как N3225.
Текст проекта стандарта ANSI C (aka C.89) доступен в Интернете. Это было стандартизировано комитетом ANSI до принятия стандартом ISO C (C.90), поэтому нумерация разделов отличается (разделы ANSI с 2 по 4 соответствуют примерно разделам с 5 по 7 ISO), хотя содержание (предположительно быть) в значительной степени идентичны.
[0, 60]
, а C90 (неверно) [0, 61]
Фактические документы стандартов могут быть не самыми полезными. Большинство компиляторов не полностью реализуют стандарты и иногда могут конфликтовать. Таким образом, документация компилятора, которую вы уже получили, будет более полезна. Кроме того, в документации будут содержаться замечания и примечания, относящиеся к платформе, для любых оговорок.
Стандарты ISO 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 как на ограничения, так и на promises международных наборов символов. Диграфы и заголовок должен был улучшить внешний вид программ на C, написанных на национальные варианты ISO 646 без, например, {или} символов. На другой конец спектра, объекты, подключенные к распространять старый Стандарт едва адекватно в полный и последовательный набор утилит для обработки широких символов и многобайтовые строки.
В этом документе обобщается нормативное дополнение 1. Оно предназначено для быстро информировать читателей, которые уже знакомы со Стандартом; Это не может и не может ввести сложный предмет за NA1, а также не может заменить оригинальный документ в качестве справочного руководства. (Тем не менее, он пытается быть максимально точным, а его автор хотел бы услышать о любых ошибках или упущениях.)
http://c0x.coding-guidelines.com/ содержит стандартную версию стандарта C на основе HTML. Собственно, слегка измененная версия:
Этот веб-сайт содержит модифицированную версию N1256. Оно включает формулировка, которая была удалена с C99 (т.е. в пробитой форме) и формулировка, которая раньше отображалась на C99 (то есть в подчеркнутом форма).