Де я можу знайти поточні стандартні документи на C або C ++?


394

На багато запитань відповідь, здається, знаходиться у «стандарті». Однак де ми це знаходимо? Переважно онлайн.

Гуглінг іноді може відчувати себе марним, знову ж таки, особливо для стандартів С, оскільки вони затонули в розливі дискусій на форумах програмування.

Щоб розпочати це, оскільки саме зараз я шукаю, де є хороші інтернет-ресурси:

  • C89
  • C99
  • С11
  • C ++ 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 сторінки:

Tim Song також підтримує створені HTML та PDF версії TS для мереж та діапазонів.


60
Проблема книги Шильдта полягає в тому, що його коментарі сильно знецінюють стандарт, який він коментує.
sbi

57
Дуже погана рекомендація щодо книги (Герба Шильдта). Дивіться це: lysator.liu.se/c/schildt.html
Wiz

11
Мені відомо про огляд - я згадую книгу лише як можливий спосіб отримати стандарт дуже недорого. Але я вважаю, що люди повинні знати і про огляд. Я б запропонував просто ігнорувати анотаційну частину книги, якщо ви хочете недорогий стандартний копій (саме це я роблю).
Майкл Берр

37
Книга Шильдта (яка, на мою думку, вийшла з друку) була значно дешевшою, ніж друкована копія фактичного стандарту. Було запропоновано, що різниця в ціні відображає цінність приміток. Кожен примірник книги повинен супроводжуватися роздруківкою стандарту анотованих анотованих приміток C Clive DW Feather . (Зауважте, у книзі Шильдта відсутній якийсь вступний матеріал.)
Кіт Томпсон

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 git
2018-04-02: N4741 git
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 По суті 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 Проект розширеного технічного виправлення
1997-00-00: N1117 Проект розширеного технічного виправлення

Наступні всі версії стандарту стандарту :
Усі наступні можна безкоштовно завантажити
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 за збереження списку, який постійно оновлюється, ніж навіть робоча група ISO 21 .
Лундін

5
+1 для списку; лише додати, що всі чернетки доступні як сховище git github.com/cplusplus/draft . Ви, можливо, можете додати посилання на isocpp.org/std/the-standard
1313

@ShafikYaghmour: Схоже, вони заблокували це (що, як правило, означає його офіційний випуск). Я оновив посилання на версію, яка вимагає автентифікації (тобто ви заплатили за неї).
Мартін Йорк


26

Проект посилань:

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

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

C11 N1570 ( текст )

C99 N1256

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

Зауважте, що робочий проект не є типовим стандартом, який зараз діє, і він не є точно опублікованим стандартом


Посилання "N1169" переходить до документа на чотири сторінки, який містить кілька повідомлень про дефекти. Це не є жодним сенсом проекту стандарту C ++ (або будь-якого іншого).
Гарет МакКаган

Мені подобається ця відповідь, оскільки це дає зрозуміти, що є останнім проектом для кожного головного випуску.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功


12

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

Хоча вони не завершені, проте їх зазвичай можна знайти в Інтернеті, як чернетки. У більшості випадків остаточна версія суттєво не відрізняється від останньої чернетки, тому, хоча і не ідеальна, вони підійдуть просто чудово.


7

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

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

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


1
Лише примітка про версію для друку для C Standard від 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 - Тут наміром було не сказати, що стандарт не корисний (FYI, переходячи від стандарту спочатку - це підхід, який я застосував у минулому), а щоб ви також мали знати свою вихідну точку реального світу, що, сподіваємось, відповідає стандартам.
Кріс Кумлер

6
Документація на компілятор, як правило, не випускає речей, які охоплюються стандартами.
СамБ

4

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


Це справді останній проект? Я знаю одну різницю в тому, що цей проект визначає діапазон tm_sec, який повинен бути [0, 60], а C90 (неправильно)[0, 61]
Cubbi

@Cubbi, оскільки я не можу особисто довести, що це так, я змінив формулювання. Дякую.
jxh

@Cubbi: він сказав, що це останній проект стандарту ANSI . Здається, що хтось із ISO WG заплутався і подумав, що можливі дві високосні секунди в році можуть трапитися в / після тієї ж хвилини теж ... Або вони отримали помилку POSIX, яка не каже, де їх взяла з, тільки що вони виправили це, щоб вирівняти C99.
СамБ

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 або на паперовій копії).

Зведений документ можна знайти тут .

Коли (1990 року) проект стандарту ANSI C розглядався щодо прийняття міжнародного стандарту в 1990 році, було кілька заперечень, оскільки він не стосувався питань інтернаціоналізації. Оскільки Стандарту вже було декілька років у розробці, було домовлено, що для створення основи буде внесено декілька змін (наприклад, додано функції підпункту 7.10.7), а робота проводитиметься окремо для забезпечення належна інтернаціоналізація стандарту. Ця робота завершилася Нормативним доповненням 1.

Нормативне доповнення 1 втілює реакцію С як на обмеження, так і на обіцянки міжнародних наборів символів. Диграфи та заголовок мали на меті покращити зовнішній вигляд програм C, написаних у національних варіантах ISO 646 без, наприклад, {або} символів. З іншого боку спектру, засоби, підключені та розширюють ледь адекватну основу старого стандарту, складають повний та послідовний набір утиліт для обробки широких символів та багатобайтових рядків.

Цей документ підсумовує Нормативне доповнення 1. Він призначений для швидкого інформування читачів, які вже знайомі зі Стандартом; вона не може і не може ввести складний предмет, що стоїть за NA1, і не може замінити оригінальний документ як довідковий посібник. (Тим не менш, він намагається бути максимально точним, і його автор хотів би почути про будь-які помилки чи упущення.)


-6

http://c0x.coding-guidelines.com/ містить в собі версію стандарту С на основі HTML. Насправді, трохи змінена версія:

Цей веб-сайт містить модифіковану версію N1256. Вона включає в себе формулювання, яке було видалено з C99 (тобто, підкреслено через форму), і формулювання, яке раніше з'являється у C99 (тобто, у підкресленій формі).


2
Веб-сайт марний, оскільки більшість сторінок порожні.
Nisse Engström

Цей веб-сайт насправді зовсім нерозумний.
MD XF
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.