Что такое «ANSI C «?

#c #standards #c 98

#c #стандарты #c 98

Вопрос:

Кто-то сказал мне, что C 98 был написан под ANSI до того, как был официально стандартизирован как ISO / IEC 14882: 1998.

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

  • Является ли «ANSI C » хорошим описанием для C 98?
  • Является ли «ANSI C » хорошим описанием для последующих версий стандарта C ?

Комментарии:

1. Сложно подобрать ответ на этот вопрос. Рад видеть, что это привлекло всех новичков. 🙂

2. Спасибо за все ваши ответы. Я думаю, что я удовлетворен. 🙂

Ответ №1:

Первоначально, в 89 году, стандартизацией C занимался ANSI X3J16. Начиная с 91-го года, к нему присоединился ISO WG21. Возможно, вы захотите прочитать в BS Историю C : 1979-1991. ИМО, «ANSI C » — это просто оставшееся название; язык — «ISO C «, хотя ANSI косвенно участвует в стандартизации.

Ответ №2:

На этой странице gotw кратко описывается взаимосвязь ANSI и ISO с точки зрения C :

Официальные названия комитетов ISO и США следующие:

ISO / IEC JTC1/SC22/WG21 — C (комитет ISO C )

INCITS PL22.16 — C (комитет США по C , часто называемый «комитетом ANSI C » — хотя, точнее, INCITS — это отдельная организация, которая не является частью ANSI, но аккредитована ANSI для разработки стандартов США) (ранее называлась X3J16 и J16)

Эти две группы вместе часто упоминаются в единственном числе как «комитет C «, потому что они встречаются и выполняют свою работу вместе. Собрания всегда проходят в одной комнате в одно и то же время

Похоже, стандарт ISO, разработанный этим комитетом, автоматически становится стандартом США, хотя я уверен, что люди, которые действительно работают в этих комитетах, могут объяснить лучше.

Комментарии:

1. В большинстве стран стандарт ISO автоматически становится национальным стандартом (или стандартом национального органа, в зависимости от того, как все организовано в стране). Таким образом, ISO C — это также ANSI C , BSI C , DIN C и т.д. Обычно, когда это стандарт ISO, мы называем его ISO, а не меняем название в зависимости от страны, в которой мы находимся.

Ответ №3:

Вроде того, но не совсем. Отдельного стандарта ANSI для C нет и никогда не было.

Текущий стандарт, однако, на самом деле является INCITS / ISO / IEC 14882-2003. С 2003 года INCITS стала отдельной организацией, аккредитованной ANSI. Название INCITS не было новым, но ранее оно было частью ANSI. В 2003 году он был «выделен» в отдельную (но все еще аккредитованную ANSI) организацию. Таким образом, текущий стандарт (2003) отображается как стандарт INCITS / ISO / IEC, и я полагаю, что предстоящий стандарт (2011) также будет.

Комментарии:

1. … и я всегда думал, что это BS / ISO / IEC 14882: 2003 😉 .

2. @Charles: Близко, но не совсем. Есть небольшая разница: это BS ISO/IEC 14882-2003 . Хотя я не совсем уверен, сколько означает пробел в сравнении с косой чертой. Я хотел сказать не столько о том, чтобы отдать должное INCITS или чему-то подобному, сколько указать на то, что «ANSI» вообще не упоминается, а INCITS теперь является отдельной организацией от ANSI. shop.bsigroup.com/en/ProductDetail/?pid=000000000030116778

Ответ №4:

C 98 был разработан международным комитетом, входящим в Международную организацию по стандартизации (ISO). ANSI и другие национальные органы по стандартизации являются членами этого комитета. Международный стандарт был принят ANSI в качестве национального стандарта США, а также многими другими национальными органами по стандартизации.

Более ранние версии были коммерчески разработаны в США AT amp; T; Я не уверен, был ли ANSI задействован в промежуточных версиях (РЕДАКТИРОВАТЬ: но ответ Эрика предполагает, что это было, вкратце).

Является ли «ANSI C » хорошим описанием для C 98?

Я бы назвал это «Стандартным C «, или «C 98», или просто «C «, если понятно, что я говорю о текущем стандарте. Несмотря на техническую точность, «ANSI C » может сбить с толку людей, которые не понимают, что это означает одно и то же, особенно людей из других стран, которые могут не знать, что такое ANSI. У меня, вероятно, получилось бы странно, если бы я назвал это «Британский стандарт C «, столь же точное описание.

Является ли «ANSI C » хорошим описанием для последующих версий стандарта C ?

Тот же ответ. Стандарты C разработаны ISO и приняты ANSI и другими организациями.

Комментарии:

1. Или наоборот: первоначальным стандартом C был ANSI C 1989. Принятый ISO в 1990 году, он стал (с другими номерами абзацев, но в остальном тем же) ISO C 1990. Однако стандартом C с самого начала был ISO.

2. @James: действительно, стандартизация C пошла другим путем. Когда я сказал «стандарты» в последнем предложении, я имел в виду стандарты C , а не международные стандарты в целом.

Ответ №5:

AFAIK когда говорят «ANSI C «, на самом деле имеют в виду «нет расширений, специфичных для компилятора».

Комментарии:

1. Верно, но это ничего не говорит о том, насколько он точен.

Ответ №6:

Рабочая группа ISO создает стандарт. В C 98 была проделана большая работа по стандартизации в Америке (потому что именно там был создан C и где жили его создатели) до того, как стандартизация была проведена под эгидой комитета ISO (которым были те же люди). Затем окончательный стандарт ISO был принят ANSI и другими национальными органами по стандартизации.

Я всегда называл стандартный C «Стандартным C «.

Комментарии:

1. Бьярне — датчанин / британец, и C был создан для его докторской диссертации, которую он написал в Англии. Он переехал в Штаты позже.