ANSI C — стандарт мови C, опублікований американським Національним інститутом стандартів (ANSI). Дотримання цього стандарту допомагає створювати легко портовані програми.
Історія Перший стандарт мови C опублікував Американський інститут ANSI. Через деякий час його прийняла міжнародна організація зі стандартизації ISO, яка й продовжила випускати наступні версії стандарту, які став приймати за стандарт і інститутом ANSI. Попри це стандарт досі частіше називають ANSI C, а не ISO C.
C89 1983 року американський Національний інститут стандартів сформував комітет X3J11 для створення специфікації стандарту C. 1989 року, після тривалого і напруженого процесу, стандарт завершили і затвердили як ANSI X3.159-1989 «Мова програмування C». Саме цю версію часто називають "ANSI C", або "C89" (щоб відрізнити її від C99).
C90 1990 року, стандарт ANSI C (з невеликими змінами) прийняла міжнародна організація зі стандартизації (ISO) як ISO/IEC 9899:1990. Цю версію іноді називають C90. Однак, терміни C89 і C90 стосуються по суті однієї мови.
C99
У березні 2000 року ANSI прийняв стандарт ISO/IEC 9899:1999. Цей стандарт зазвичай називають C99. Основні нововведення:
Нові вбудовані типи даних: long long, _Bool, _Complex й _Imaginary. Нові можливості мови, зокрема, масиви змінної довжини, індекси статичних масивів, compound-літерали, варіативні макроси, ключове слово restrict. Нові заголовні файли, зокрема, stdint.h, tgmath.h, fenv.h, complex.h. Можливості, сумісні зі C++, зокрема, inline-функції, однорядкові коментарі //, змішання декларацій та коду, символи Юнікоду в ідентифікаторах. Вилучено небезпечні елементи C89, наприклад, неявне оголошення функцій і неявне int.
Для C99 випущено три коригувальних документи:
ISO/IEC 9899:1999/Cor 1:2001(E) ISO/IEC 9899:1999/Cor 2:2004(E) ISO/IEC 9899:1999/Cor 3:2007(E)
C99 більше не підтримують комітети ANSI/INCITS та ISO/IEC на користь підтримки та розробки C11.
C11
C11 — новий стандарт мови, прийнятий 2011 року як ISO/IEC 9899:2011. Основними оновленнями є покращена підтримка Юнікоду, поява нового ключового слова _Generic, платформна підтримка багатопотоковості (threads.h) та підтримка атомарних типів у мові та бібліотеці (stdatomic.h).
Для C11 випущено один коригуючий документ:
ISO/IEC 9899:2011/Cor 1:2012
С17 Станом на 2021 рік, C17 був поточним стандартом мови C.
В основному C17 коригує дефекти, виявлені в C11, не вносячи ніяких нововведень.
Підтримка компіляторами ANSI C нині підтримують практично всі поширені компілятори мови C. будь-яка програма, яку написано тільки з використанням стандарту і без специфічних апаратних припущень, гарантовано повинна працювати на будь-якій платформі з достатньо стандартною реалізацією мови C.
Примітки
Посилання Робоча група ISO C