В чем разница между C, C99, ANSI C и GNU C?

Я начал заниматься программированием на codechef и был сбит с толку разницей между C и C99. Что здесь означает С? Это C89? Проверьте языки внизу этой отправки . Он содержит как C, так и C99.

Я нашел в интернете что-то под названием GNU C. Существует ли другой C для систем linux /unix? Соответствуют ли они стандартам C по ANSI? Я также читал в некоторых местах "C99 строгий". Что это?

Существуют ли какие-либо другие стандарты использования C? Есть что-то под названием C 4.3.2 или это версия gcc в текущем использовании?

EDIT:

Это , Это , это помогло. Я буду искать больше и редактировать то, что осталось без ответа.

Я не новичок в программировании. Я знаю, что такое язык Си. Я знаю, что существуют разные стандарты C по ANSI, такие как C89, C99 и C11.

102 голоса | спросил Aseem Bansal 20 J0000006Europe/Moscow 2013, 10:21:00

4 ответа


0
  • Все до стандартизации обычно называется "K & RC", после известной книги , с Деннисом Ритчи, изобретателем языка Си, в качестве одного из авторов. Это был «язык Си» 1972-1989 гг.

  • Первый стандарт C был выпущен в 1989 году на национальном уровне в США их национальным институтом стандартов ANSI. Этот выпуск называется C89 или ANSI-C. В 1989-1990 годах это был "язык Си".

  • Через год американский стандарт был принят на международном уровне и опубликован ISO (ISO 9899: 1990). Этот выпуск называется C90. Технически это тот же стандарт, что и C89 /ANSI-C. Формально он заменил C89 /ANSI-C, что сделало их устаревшими. С 1990-1999 C90 был "языком Си".

    Обратите внимание, что с 1989 года ANSI не имеет ничего общего с языком Си. Программисты, все еще говорящие об «ANSI C», обычно не имеют ни малейшего представления о том, что это значит. ИСО «владеет» языком C через стандарт ISO 9899.

  • В 1999 году стандарт C был пересмотрен, многое изменилось (ISO 9899: 1999). Эта версия стандарта называется C99. С 1999-2011 года это был "язык Си".

  • В 2011 году стандарт C был снова изменен (ISO 9899: 2011). Эта версия называется C11. Различные новые функции, такие как _Generic, _Static_assert и Поддержка потоков были добавлены к языку. В обновлении много внимания уделялось многоядерности, многопроцессорности и секвенированию выражений. В 2011–2017 годах это был «язык Си».

  • В 2017 году C11 был пересмотрен, и были решены различные сообщения об ошибках. Этот стандарт неофициально называется C17 и был выпущен как ISO 9899: 2018. Он не содержит никаких новых функций, только исправления. Это текущая версия языка Си.


«C99 строгий», вероятно, относится к настройке компилятора, заставляющей компилятор следовать букве в соответствии со стандартом. В стандарте C есть термин соответствующая реализация . По сути это означает: «этот компилятор действительно правильно реализует язык Си». Программы, которые правильно реализуют язык C, формально называются строго совместимыми программами .

«GNU C» может означать две вещи. Либо сам компилятор C, который входит в коллекцию компиляторов GNU (GCC). Или это может означать нестандартную настройку по умолчанию, которую использует компилятор GCC C. Если вы компилируете с помощью gcc program.c, вы компилируете не по стандарту C, а по нестандартной установке GNU, упоминается как "GNU C". Например, все ядро ​​Linux сделано в нестандартной GNU C, а не в стандартной C.

Если вы хотите скомпилировать свои программы в соответствии со стандартом C, введите gcc -std=c99 -pedantic-errors. Замените c99 на c11, если ваша версия GCC поддерживает это.

ответил Lundin 20 J0000006Europe/Moscow 2013, 13:04:36
0

Я ДОЛЖЕН ответить относительно ANSI C. Хотя ANSI ничего не сделал с ним, компиляторы все же созданы для него. Компилятор PIC XC16 например:    «Компилятор является полностью проверенным компилятором, который соответствует ANSI C     стандарт в соответствии со спецификацией ANSI (ANSI x3.159-1989) и     описанный в Кернигане и Ритчи Язык программирования C (второй     издание). ...» Не все программы предназначены для «больших» компьютеров, таких как ПК. Написание компилятора для вашего устройства стоит, и проверка времени и затрат; $. ANSI C жив и работает хорошо & жить в ваших встроенных /в режиме реального времени устройств.

ответил C Is Better 28 Jam1000000amThu, 28 Jan 2016 01:29:05 +030016 2016, 01:29:05
0
  • ANSI C: Первый язык Си был стандартизирован органом под названием ANSI в 1989 году, поэтому он называется c89.

  • C99:
    в соответствии с требованиями разработчиков, в 1999-2000 годах в C99 были включены дополнительные или дополнительные ключевые слова и функции (например: inline, boolean .. Добавлены функции библиотеки с плавающей запятой)

  • GNU C: GNU - это операционная система, подобная Unix (www.gnu.org) & где-то проекту GNU нужен язык программирования C, основанный на стандарте ANSI C. GNU использует компилятор GCC (GNU Compiler Collection) для компиляции кода. Он имеет функцию библиотеки C, которая определяет системные вызовы, такие как malloc, calloc, exit ... и т. Д.

ANSI C - это стандарт, который используется или упоминается другими стандартами.

ответил Kapil Chittewan 20 J0000006Europe/Moscow 2013, 11:01:49
0

Помимо Лундина Ответ

Вот что Деннис Ричи должен сказать Когда спрошено

"Почему K & R не дождался окончательного утвержденного стандарта ANSI, прежде чем писать K & R 2-е издание?"

  

Почему K & R не дождался окончательного утвержденного стандарта ANSI, прежде чем писать   K & R 2-е издание? Кажется, что эта книга будет только правильным стандартом для   за несколько месяцев до того, как он будет заменен окончательным стандартом ANSI. я знаю   что на этой поздней стадии, вероятно, будет мало серьезных изменений, но почему бы и нет   подождите несколько месяцев и убедитесь, что вы все правильно поняли, вместо того, чтобы   почти сразу написать 3-е издание или устареть?

     
    

Мы подумали, что было бы неплохо отметить 10-летие     первого издания.     Более серьезно, мы начали работу прошлым летом, потому что у нас было     время и наклон, и оказалось, что X3J11 приближается     конец. В декабре и январе, когда мы заканчивали, мы рассматривали     оправдана ли возможность важных изменений     доставка и (после обсуждения вопроса с издателем)     решил, что ждать не стоит. P-H хотел этого, и оба     Брайан и я хотели, чтобы это не входило в наши планы.

         

Даже если в стандарте есть изменения, трудно представить     что они будут достаточно обширными, чтобы гарантировать новое издание.     (Мы даже были готовы как-то справиться с noalias, если бы это продолжалось.)     Мы готовы внести необходимые изменения в будущую печать,     но есть основания надеяться, что они должны быть незначительными. X3J11-х     участники очень хотят закончить без удивительных людей;     многие из них работают в компаниях, которые готовят компиляторы ANSI,     в конце концов.

         

Деннис Ритчи

  
ответил Suraj Jain 17 FebruaryEurope/MoscowbFri, 17 Feb 2017 13:06:12 +0300000000pmFri, 17 Feb 2017 13:06:12 +030017 2017, 13:06:12

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132