PDF versions of the standard
По состоянию на 1 сентября 2014 г. лучшие места по цене для документов стандартов C и C ++ в формате PDF:
Обычно вы не можете получить старые версии стандарта (любого стандарта) непосредственно от органов по стандартизации вскоре после выпуска новой редакции стандарта. Таким образом, стандарты для C89, C90, C99, C ++ 98, C ++ 03 будет трудно найти для покупки в органе по стандартизации. Если вам нужна старая версия стандарта, проверьте Techstreet как один из возможных источников. Например, он по-прежнему может предоставлять канадскую версию стандарта CAN / CSA-ISO / IEC 9899: 1990 в формате PDF за плату.
Non-PDF electronic versions of the standard
Print versions of the standard
Печатные копии стандартов можно получить в национальных органах по стандартизации и в ISO, но они очень дороги.
Если вам нужна печатная копия стандарта C90 за гораздо меньшие деньги, чем указано выше, вы можете найти дешевую бывшую в употреблении копию Книга Херба Шильдта Аннотированный стандарт ANSI на Amazon, который содержит фактический текст стандарта (полезный) и комментарий к стандарту (менее полезный - он содержит несколько опасных и вводящих в заблуждение ошибок).
Стандарты C99 и C ++ 03 доступны в виде книги от Wiley и BSI (Британского института стандартов):
Standards committee draft versions (free)
Рабочие проекты будущих стандартов часто доступны на сайтах комитетов:
Если вы хотите получить черновики из текущих или более ранних стандартов C / C ++, некоторые из них доступны бесплатно в Интернете:
For C:
ANSI X3.159-198 (C89): я не могу найти PDF-файл с C89, но он почти такой же, как C90. Единственные существенные различия заключаются в шаблоне и нумерации разделов, хотя есть некоторые небольшие текстовые различия.
ISO / IEC 9899: 1990 (C90): (Почти то же, что и ANSI X3.159-198 (C89), за исключением передней части и нумерации разделов. В разделе 6.5.7 (ранее 3.5.7) есть по крайней мере одно текстовое различие) , где список стал заключенным в фигурные скобки списком. Обратите внимание, что преобразование между стандартом ANSI и ISO / IEC видно внутри этого документа, документ ссылается на свое имя как ANSI / ISO: 9899/99, хотя это неправильное название для более позднего стандарта, правильное название - ISO / IEC 9899: 1990)
TC1 для C90: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n423.pdf
Ссылка в формате PDF для TC2 на веб-сайте WG14, к сожалению.
ISO / IEC 9899: 1999 (C99 включает все три технических исправления): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
Более ранняя версия C99, включающая только TC1 и TC2: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf
Рабочий черновик оригинала (т.е. предварительные исправления) C99: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n843.htm (HTML) и http://www.dkuug.dk/JTC1/SC22/WG14/www/docs/n843.pdf (PDF) . Обратите внимание, что было два более поздних рабочих проекта: N869 и N878, но они, похоже, были удалены с веб-сайта WG14, поэтому это последний доступный проект.
Список изменений между C89 / C90 и C99: http://port70.net/%7Ensz/c/c89/c9x_changes.html
TC1 для C99 (только TC, а не стандарт, включающий его): http://www.open-std.org/jtc1/sc22/wg14/www/docs/9899tc1/n32071.PDF
TC2 для C99 (только TC, а не стандарт, включающий его): http://www.open-std.org/jtc1/sc22/wg14/www/docs/9899-1999_cor_2-2004.pdf
ISO / IEC 9899: 2011 (C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
ISO / IEC 9899: 2011 / Cor 1: 2012 (единственное техническое исправление C11): это можно просмотреть по адресу https://www.iso.org/obp/ui/#iso:std:iso-iec:9899:ed-3:v1:cor:1:v1:en, но не может быть загружен. Это собственно исправление, а не черновик.
ISO / IEC 9899: 2018 (C17 / C18): https://web.archive.org/web/20181230041359if_/http://www.open-std.org/jtc1/sc22/wg14/www/abq/c17_updated_proposed_fdis.pdf (N2176)
C2x в стадии разработки - последний рабочий проект от 12 апреля 2020 г. (N2596): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2596.pdf
For C++:
Обратите внимание, что эти документы не совпадают со стандартом, хотя версии непосредственно перед собраниями, на которых решается вопрос о стандарте, обычно очень близки к тому, что содержится в окончательном стандарте. Версии FCD (Final Committee Draft) защищены паролем; вы должны быть членом комитета по стандартам, чтобы получить их.
Несмотря на то, что черновые версии могут быть очень близки к окончательным ратифицированным версиям стандартов, некоторые редакторы этого поста настоятельно рекомендуют вам получить копию фактических документов - особенно если вы планируете цитировать их в качестве ссылок. Конечно, голодающие студенты должны пойти дальше и использовать шашки, если у них нет денег.
Похоже, что если вы готовы и можете подождать несколько месяцев после ратификации стандарта, поиск стандарта при поиске стандарта является ключевым. Таким образом, один из редакторов этой публикации смог найти стандарты 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.
POSIX extensions to the C standard
Стандарт POSIX (IEEE 1003.1) требует, чтобы совместимая операционная система включала компилятор C. Этот компилятор, в свою очередь, должен соответствовать стандарту C, а также поддерживать различные расширения, определенные в разделе системных интерфейсов POSIX (например, тип данных off_t
, заголовок <aio.h>
, функция clock_gettime()
и макрос _POSIX_C_SOURCE
.)
Итак, если вы пытались найти конкретную функцию, вас проинформировали, что эта функция является частью POSIX, а не стандарта C, и вы задаетесь вопросом, почему стандарт операционной системы требует функций компилятора и языковых расширений ... теперь вы знаете!
POSIX.1-2001: раздел «Системные интерфейсы» можно загрузить как отдельный документ с сайта https://mirror.math.princeton.edu/pub/oldlinux/download/c951.pdf. В разделе 1.7 указано, что соответствующая версия стандарта C - C99.
Раздел Shell и Utilities (https://mirror.math.princeton.edu/pub/oldlinux/download/c952.pdf) требует, чтобы не только существовал C99-совместимый компилятор, но и чтобы его можно было вызывать из командной строки под именем c99. Одним из способов реализации этого является размещение сценария оболочки c99 в / usr / bin, который вызывает gcc с параметром -std=c99
, добавленным в список параметров командной строки, и блокирует указание любых конкурирующих стандартов.
В POSIX.1-2001 было два технических исправления, одно от 2002 года, а другое от 2004 года. Я не думаю, что они включены в документы, указанные выше. Есть онлайн-версия HTML с исправлениями по адресу https://pubs.opengroup.org/onlinepubs/009695399/ - но я должен добавить, что у меня были проблемы с окном поиска, поэтому использование Google для поиска по сайту, вероятно, будет вашим лучшим выбором.
Есть платная ссылка для загрузки первого исправления по адресу https://standards.ieee.org/standard/1003_1-2001-Cor1-2002.html.
Для второго также есть платная ссылка на https://standards.ieee.org/standard/1003_1-2001-Cor2-2004.html
Черновая версия POSIX.1-2008 находится по адресу http://www.open-std.org/jtc1/sc22/open/n4217.pdf.
POSIX.1-2008 также содержит два технических исправления, последнее из которых датировано 2016 годом. Существует онлайн-версия стандарта в формате HTML, включающая исправления по адресу https://pubs.opengroup.org/onlinepubs/9699919799.2016edition/ - хотя, опять же, у меня были ситуации, когда собственное окно поиска на сайте не подходило для поиск информации.
Онлайн-версия POSIX.1-2017 в формате HTML находится по адресу https://pubs.opengroup.org/onlinepubs/9699919799/ - хотя, опять же, я рекомендую использовать Google вместо окна поиска на этом сайте. Согласно веб-сайту Open Group IEEE 1003.1-2017 ... является пересмотром 1003.1-2008 стандарт для объединения стандарта, включая два его технических исправления (как есть). manpages Linux описывают его как технически идентичный POSIX.1- 2008 г. с применением технических исправлений 1 и 2. Следовательно, это не основная версия и не меняет значение макроса _POSIX_C_SOURCE
.
person
Community
schedule
17.09.2008