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

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

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

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

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

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

Jonathan Leffler 01.09.2014 02:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
394
1
142 237
9

Ответы 9

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

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

Стандарты 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 доллара США.

Keith Thompson 10.12.2011 01:29

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

Arto Bendiken 22.05.2013 04:44

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

FCD - это доступен сейчас.

Roger Pate 14.04.2010 21:47

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

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

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

Замечание о версии для печати стандарта C от Wiley: это стандарт C99, а не C89 / 90.

Michael Burr 27.09.2008 02:14

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

The lastest publically available version of the standard is the combined C99 + TC1 + TC2 + TC3, WG14 N1256, dated 2007-09-07. This is a WG14 working paper, but it reflects the consolidated standard at the time of issue.

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

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

Spidey 04.07.2012 20:03

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

hdante 01.03.2013 07:49

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

Kris Kumler 01.03.2013 18:45

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

SamB 25.03.2015 05:43

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

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

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

C11 N1570 (текст)

C99 N1256

Drafts of the Standard are circulated for comment prior to ratification and publication.

Note that a working draft is not the standard currently in force, and it is not exactly the published standard

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

Gareth McCaughan 13.11.2012 15:37

Мне нравится этот ответ, потому что он дает понять, какой черновик является самым последним для каждого основного выпуска.

Ciro Santilli TRUMP BAN IS BAD 14.11.2018 16:37

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

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

Cubbi 17.08.2013 02:46

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

jxh 17.08.2013 02:54

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

SamB 25.03.2015 05:54

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

veganaiZe 20.06.2018 06:39

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

Keith Thompson 08.11.2018 12:59

Хотя это и не настоящий стандарт, есть поправка к ISO C (C89 / 90) под названием C94 / 95, или Нормативное дополнение 1. Он был интегрирован в C99, хотя некоторые компиляторы, такие как Лязг, позволяют вам указывать -std=c94 в командной строке. ISO / IEC 9899: 1990 / Amd 1: 1995 можно приобрести по высокой цене в SAI GLOBAL (PDF или бумажная копия).

Краткое содержание документа можно найти в здесь.

When the (then draft) ANSI C Standard was being considered for adoption of an International Standard in 1990, there were several objections because it didn't address internationalization issues. Because the Standard had already been several years in the making, it was agreed that a few changes would be made to provide the basis (for example, the functions in subclause 7.10.7 were added), and work would be carried out separately to provide proper internationalization of the Standard. This work has culminated in Normative Addendum 1.

Normative Addendum 1 embodies C's reaction to both the limitations and promises of international character sets. Digraphs and the header were meant to improve the appearance of C programs written in national variants of ISO 646 without, e.g., { or } characters. On the other end of the spectrum, the facilities connected to and extend the old Standard's barely adequate basis into a complete and consistent set of utilities for handling wide characters and multibyte strings.

This document summarizes Normative Addendum 1. It is intended to quickly inform readers who are already familiar with the Standard; it does not, and cannot, introduce the complex subject matter behind NA1, nor can it replace the original document as a reference manual. (Nevertheless, it tries to be as accurate as possible, and its author would like to hear about any errors or omissions.)

Другие вопросы по теме