Является ли «ANSI C» или «ANSI C ++»; еще что-то значит сегодня?

В прошлый раз я проверял, говоря, что кодирование в ANSI C было равносильно тому, чтобы сказать «это код, совместимый с C99, в котором больше ничего нет». Теперь с C11 и C ++ 11 сохраняется ли это различие? Это все еще имеет какое-то значение?

6

Решение

Исторически «ANSI C» использовался для обозначения «стандартного C», то есть C89, в отличие от «K».&R C «и различные предстандартные варианты, придуманные авторами-компиляторами. Вот почему во втором издании» Языка программирования C «имеется большой красный штамп» ANSI C «на обложке.

Затем какое-то время «ISO C» использовалось для обозначения «нового стандарта C», то есть C99, в отличие от «ANSI C».

Это всегда было сбивающим с толку использованием, поскольку как ISO, так и ANSI ратифицировали как C89, так и C99. ISO ратифицировал первый как C90 и опубликовал его с некоторыми изменениями компоновки по сравнению с версией ANSI, но предположительно с тем же существенным содержанием. Таким образом, «ANSI C» всегда был стандартом ISO, а «ISO C» всегда был стандартом ANSI. Единственная разница заключалась в том, какой орган следил за процессом стандартизации.

После этого использования (и, вероятно, поощряя его продолжать), -ansi флаг GCC эквивалентен -std=c90, В этом контексте это на самом деле означает «C90 плюс некоторые расширения GNU, которые не конфликтуют со стандартом».

Я не знаю, что «ANSI C» относится к C99, но это не значит, что оно не использовалось для обозначения этого.

Я не думаю, что использование термина «ANSI C» помогло кому-либо за последние 10 лет. ANSI ратифицировала C11, но было бы бесполезно начинать говорить: «Ага! Хорошо, в этом случае ANSI C внезапно теперь означает C11!». Можно, конечно, сказать, что C11 является текущим стандартом ANSI C, но, тем не менее, термин «ANSI C» нельзя использовать с разумным ожиданием того, что люди четко поймут его как C11.

15

Другие решения

И ISO C11, и ISO C ++ 11 были ратифицированы как новые стандарты ANSI C и C ++.

Например, на моей ANSI-копии C11 написано:

Принят INCITS (Межгосударственный комитет по стандартам информационных технологий) в качестве американского национального стандарта. Дата утверждения ANSI: 23.05.2012

9

С тех пор как1 3 различных ревизии стандарта C и «две с половиной» C ++ широко используются, я бы сказал, что такая терминология сегодня имеет меньше смысла, чем когда-либо.


  1. На самом деле, в данный момент существует только один «текущий» стандарт C (C ++), последний, так как он заменяет предыдущие версии. Здесь я говорю о том, что все эти предыдущие версии все еще очень актуальны (часто больше, чем последняя версия).
5