C11 або ISO/IEC 9899:2011 (неофіційно C1X) — стандарт для мови Сі (ISO/IEC 9899:2011), який замінив чинний стандарт C99. Офіційно про випуск стандарту оголошено 19 грудня 2011. Ця версія стандарту переважно стандартизує можливості, що існують у поширених сучасних компіляторах. Через погану сумісність поточних реалізацій C99 зі стандартом, C11 включає більше вибіркових можливостей для спрощення сумісності зі стандартом ядра мови. Стандарт C18 (він же C17), що діє від 2018 року, фактично є уточненим варіантом C11, що виправляє знайдені в стандарті помилки.
Останню чернетку специфікації (доступна для безкоштовного звантаження) видано у квітні 2011 року під назвою N1570.
Новий стандарт пройшов заключний перегляд чернетки 10 жовтня 2011 року та офіційно ратифікований ISO й опублікований в ISO/IEC 9899:2011 8 грудня 2011 року без жодних зауважень.
Визначення стандартного макроса __STDC_VERSION__ зі значенням 201112L дає вказівку, що є підтримка C11. Деякі можливості C11 підтримуються GCC, починаючи з версії 4.6. У Clang підтримка починається від версії 3.1, а IBM XL C підтримка з версії 12.1.
Зміни порівняно з C99
Остання чернетка від 11 квітня 2011 року включає такі зміни в мові C99 та специфікації бібліотеки:
- Вирівнювання даних . Для цього в мову додали специфікатор
_Alignas
, операторalignof
, функціюaligned_alloc
та заголовний файл<stdalign.h>
; - Специфікатор функції
_Noreturn
; - Вирази, які залежать від типу (англ. Type-generic expressions) за допомогою ключового слова
_Generic
. Наприклад, такий макрос для обчислення кубічного кореняcbrt(x)
транслюється вcbrtl(x)
,cbrt(x)
абоcbrtf(x)
, залежно від типу параметраx
:
#define cbrt(X) _Generic((X), long double: cbrtl, \ default: cbrt, \ float: cbrtf)(X)
- Підтримка багатонитковості, для цього до стандарту додано специфікатор типу
_Thread_local
, заголовний файл<threads.h>
, що включає функції для створення та керування нитками, м'ютексами, моніторами і функції керування сховищем потоку. Також у C11 додано кваліфікатор типу_Atomic
і заголовний файл<stdatomic.h>
для атомарних операцій доступу до пам'яті; - Поліпшено підтримку Юнікоду, засновану на технічному звіті C Unicode Technical Report ISO/IEC TR 19769:2004 (типи
char16_t
таchar32_t
для зберігання даних у кодуваннях UTF-16/UTF-32, функції перетворення, що містяться в заголовковому файлі<uchar.h>
та відповідні префіксиu
таU
перед рядковими літералами, а також префіксu8
для рядків у кодуванні UTF-8); - Функцію
gets
, визнану застарілою, видалено з поточної ревізії стандарту мови Сі (ISO/IEC 9899:1999/Cor.3:2007(E)); - Інтерфейси для [en] (Annex K);
- Можливості аналізування (англ. Analyzability features, Annex L);
- Додано більше макросів для отримання характеристик чисел з рухомою комою, що стосуються денормалізованих чисел та максимальної кількості десяткових цифр, які можна зберігати без втрати точності;
- Анонімні структури та об'єднання, що використовуються для вкладення структур та об'єднань, наприклад,
struct T { int tag; union { float x; int n; }; };
. - Статичні припущення, які кращі від команд препроцесора
#if
і#error
, оскільки припущення обчислюється на пізнішій стадії трансляції, коли компілятор «знає», що якого типу; - Привілейований режим створення та відкриття (англ. exclusive create-and-open mode)
"…x"
для функції fopen. Цей режим аналогічний режимам [en]O_CREAT|O_EXCL
і зазвичай використовується для блокування файлів; - Функція
— третя функція для завершення програми з мінімальною деініціалізацією значень, якщо завершити програму функцією
[en]
не вдається; - Макроси для створення комплексних чисел (додані тому, що код
real + imaginary*I
міг не призвести до очікуваного значення, якщо уявна частина була нескінченною або «не числом» (NaN)).
Вибіркові можливості
Нова ревізія стандарту дозволяє реалізаціям не підтримувати певні частини стандарту, зокрема ті, які раніше треба було підтримувати обов'язково (в C99). Програми можуть використовувати передвизначені макроси для з'ясування того, підтримує реалізація частину стандарту чи ні.
Можливість | Макрос | Доступність в C99 |
---|---|---|
Аналізування (Annex L) | __STDC_ANALYZABLE__ | Недоступна |
Дії з дробовими числами за стандартом IEC 60559 (Annex F) | __STDC_IEC_559__ | Вибірково |
Арифметика комплексних чисел, сумісна зі стандартом IEC 60559 (Annex G) | __STDC_IEC_559_COMPLEX__ | Вибірково |
Інтерфейси перевірки меж масиву (Annex K) | __STDC_LIB_EXT1__ | Недоступна |
Типи комплексних чисел (<complex.h> ) | __STDC_NO_COMPLEX__ | Обов'язково |
Багатониткове програмування (<threads.h> ) | __STDC_NO_THREADS__ | Недоступна |
Атомарні операції (<stdatomic.h> і кваліфікаційний тип _Atomic ) | __STDC_NO_ATOMICS__ | Недоступна |
Масиви змінної довжини | __STDC_NO_VLA__ | Обов'язково |
Див. також
Примітки
- . Архів оригіналу за 27 грудня 2011. Процитовано 30 березня 2022.
- . Архів оригіналу за 12 лютого 2018. Процитовано 30 березня 2022.
- . Архів оригіналу за 31 березня 2022. Процитовано 30 березня 2022.
- Brad Kelechava (13 листопада 2018). . ANSI. Архів оригіналу за 11 квітня 2022. Процитовано 11 червня 2019.
- (PDF). Архів оригіналу (PDF) за 25 грудня 2021. Процитовано 30 березня 2022.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - . www.open-std.org. Архів оригіналу за 18 січня 2019. Процитовано 28 січня 2016.
- . gcc.gnu.org. Архів оригіналу за 4 листопада 2015. Процитовано 28 січня 2016.
- . llvm.org. Архів оригіналу за 4 березня 2016. Процитовано 28 січня 2016.
- (англ.). www.ibm.com. 17 квітня 2014. Архів оригіналу за 8 березня 2021. Процитовано 28 січня 2016.
- Berin Babcock-McConnell. . Архів оригіналу за 29 вересня 2011.
- . Архів оригіналу за 20 січня 2022. Процитовано 30 березня 2022.
- (PDF). Архів оригіналу (PDF) за 20 січня 2022. Процитовано 30 березня 2022.
Посилання
- The C1X Charter [ 24 вересня 2015 у Wayback Machine.]
- N1570 [ 25 грудня 2021 у Wayback Machine.], остання чернетка стандарту C1X Станом на 25 квітня 2011, датований 12.04.2011
- ISO C Working Group's official website [ 12 лютого 2018 у Wayback Machine.]
- Plum, Thomas (6 квітня 2012). . . Архів оригіналу за 17 червня 2012. Процитовано 30 березня 2022.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
C11 abo ISO IEC 9899 2011 neoficijno C1X standart dlya movi Si ISO IEC 9899 2011 yakij zaminiv chinnij standart C99 Oficijno pro vipusk standartu ogolosheno 19 grudnya 2011 Cya versiya standartu perevazhno standartizuye mozhlivosti sho isnuyut u poshirenih suchasnih kompilyatorah Cherez poganu sumisnist potochnih realizacij C99 zi standartom C11 vklyuchaye bilshe vibirkovih mozhlivostej dlya sproshennya sumisnosti zi standartom yadra movi Standart C18 vin zhe C17 sho diye vid 2018 roku faktichno ye utochnenim variantom C11 sho vipravlyaye znajdeni v standarti pomilki Ostannyu chernetku specifikaciyi dostupna dlya bezkoshtovnogo zvantazhennya vidano u kvitni 2011 roku pid nazvoyu N1570 Novij standart projshov zaklyuchnij pereglyad chernetki 10 zhovtnya 2011 roku ta oficijno ratifikovanij ISO j opublikovanij v ISO IEC 9899 2011 8 grudnya 2011 roku bez zhodnih zauvazhen Viznachennya standartnogo makrosa STDC VERSION zi znachennyam 201112L daye vkazivku sho ye pidtrimka C11 Deyaki mozhlivosti C11 pidtrimuyutsya GCC pochinayuchi z versiyi 4 6 U Clang pidtrimka pochinayetsya vid versiyi 3 1 a IBM XL C pidtrimka z versiyi 12 1 Zmini porivnyano z C99Ostannya chernetka vid 11 kvitnya 2011 roku vklyuchaye taki zmini v movi C99 ta specifikaciyi biblioteki Virivnyuvannya danih Dlya cogo v movu dodali specifikator Alignas operator alignof funkciyu aligned alloc ta zagolovnij fajl lt stdalign h gt Specifikator funkciyi Noreturn Virazi yaki zalezhat vid tipu angl Type generic expressions za dopomogoyu klyuchovogo slova Generic Napriklad takij makros dlya obchislennya kubichnogo korenya cbrt x translyuyetsya v cbrtl x cbrt x abo cbrtf x zalezhno vid tipu parametra x define cbrt X Generic X long double cbrtl default cbrt float cbrtf X Pidtrimka bagatonitkovosti dlya cogo do standartu dodano specifikator tipu Thread local zagolovnij fajl lt threads h gt sho vklyuchaye funkciyi dlya stvorennya ta keruvannya nitkami m yuteksami monitorami i funkciyi keruvannya shovishem potoku Takozh u C11 dodano kvalifikator tipu Atomic i zagolovnij fajl lt stdatomic h gt dlya atomarnih operacij dostupu do pam yati Polipsheno pidtrimku Yunikodu zasnovanu na tehnichnomu zviti C Unicode Technical Report ISO IEC TR 19769 2004 tipi char16 t ta char32 t dlya zberigannya danih u koduvannyah UTF 16 UTF 32 funkciyi peretvorennya sho mistyatsya v zagolovkovomu fajli lt uchar h gt ta vidpovidni prefiksi u ta U pered ryadkovimi literalami a takozh prefiks u8 dlya ryadkiv u koduvanni UTF 8 Funkciyu a href wiki Gets title Gets gets a viznanu zastariloyu vidaleno z potochnoyi reviziyi standartu movi Si ISO IEC 9899 1999 Cor 3 2007 E Interfejsi dlya en Annex K Mozhlivosti analizuvannya angl Analyzability features Annex L Dodano bilshe makrosiv dlya otrimannya harakteristik chisel z ruhomoyu komoyu sho stosuyutsya denormalizovanih chisel ta maksimalnoyi kilkosti desyatkovih cifr yaki mozhna zberigati bez vtrati tochnosti Anonimni strukturi ta ob yednannya sho vikoristovuyutsya dlya vkladennya struktur ta ob yednan napriklad struct T int tag union float x int n Statichni pripushennya yaki krashi vid komand preprocesora if i error oskilki pripushennya obchislyuyetsya na piznishij stadiyi translyaciyi koli kompilyator znaye sho yakogo tipu Privilejovanij rezhim stvorennya ta vidkrittya angl exclusive create and open mode x dlya funkciyi fopen Cej rezhim analogichnij rezhimam en O CREAT O EXCL i zazvichaj vikoristovuyetsya dlya blokuvannya fajliv Funkciya tretya funkciya dlya zavershennya programi z minimalnoyu deinicializaciyeyu znachen yaksho zavershiti programu funkciyeyu sup class noprint span title exit operating system versiya statti exit operating system anglijskoyu movoyu style font style normal font weight normal font size normal en span sup ne vdayetsya Makrosi dlya stvorennya kompleksnih chisel dodani tomu sho kod real imaginary I mig ne prizvesti do ochikuvanogo znachennya yaksho uyavna chastina bula neskinchennoyu abo ne chislom NaN Vibirkovi mozhlivostiNova reviziya standartu dozvolyaye realizaciyam ne pidtrimuvati pevni chastini standartu zokrema ti yaki ranishe treba bulo pidtrimuvati obov yazkovo v C99 Programi mozhut vikoristovuvati peredviznacheni makrosi dlya z yasuvannya togo pidtrimuye realizaciya chastinu standartu chi ni Vibirkovi mozhlivosti v C1X Mozhlivist Makros Dostupnist v C99 Analizuvannya Annex L STDC ANALYZABLE Nedostupna Diyi z drobovimi chislami za standartom IEC 60559 Annex F STDC IEC 559 Vibirkovo Arifmetika kompleksnih chisel sumisna zi standartom IEC 60559 Annex G STDC IEC 559 COMPLEX Vibirkovo Interfejsi perevirki mezh masivu Annex K STDC LIB EXT1 Nedostupna Tipi kompleksnih chisel lt complex h gt STDC NO COMPLEX Obov yazkovo Bagatonitkove programuvannya lt threads h gt STDC NO THREADS Nedostupna Atomarni operaciyi lt stdatomic h gt i kvalifikacijnij tip Atomic STDC NO ATOMICS Nedostupna Masivi zminnoyi dovzhini STDC NO VLA Obov yazkovoDiv takozhC99 poperednya specifikaciya movi C C 11 novij prijnyatij standart C vidomij takozh yak C 0x umovna nazva pid chas yiyi rozrobki Primitki Arhiv originalu za 27 grudnya 2011 Procitovano 30 bereznya 2022 Arhiv originalu za 12 lyutogo 2018 Procitovano 30 bereznya 2022 Arhiv originalu za 31 bereznya 2022 Procitovano 30 bereznya 2022 Brad Kelechava 13 listopada 2018 ANSI Arhiv originalu za 11 kvitnya 2022 Procitovano 11 chervnya 2019 PDF Arhiv originalu PDF za 25 grudnya 2021 Procitovano 30 bereznya 2022 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya www open std org Arhiv originalu za 18 sichnya 2019 Procitovano 28 sichnya 2016 gcc gnu org Arhiv originalu za 4 listopada 2015 Procitovano 28 sichnya 2016 llvm org Arhiv originalu za 4 bereznya 2016 Procitovano 28 sichnya 2016 angl www ibm com 17 kvitnya 2014 Arhiv originalu za 8 bereznya 2021 Procitovano 28 sichnya 2016 Berin Babcock McConnell Arhiv originalu za 29 veresnya 2011 Arhiv originalu za 20 sichnya 2022 Procitovano 30 bereznya 2022 PDF Arhiv originalu PDF za 20 sichnya 2022 Procitovano 30 bereznya 2022 PosilannyaThe C1X Charter 24 veresnya 2015 u Wayback Machine N1570 25 grudnya 2021 u Wayback Machine ostannya chernetka standartu C1X Stanom na 25 kvitnya 2011 datovanij 12 04 2011 ISO C Working Group s official website 12 lyutogo 2018 u Wayback Machine Plum Thomas 6 kvitnya 2012 Arhiv originalu za 17 chervnya 2012 Procitovano 30 bereznya 2022