WikiDer > C11 (C standart versiyasi)
| C tilini qayta ko'rib chiqish | 
|---|
| K&R C • ANSI C • C99 • C11 • C17 • C2x | 
C11 (avval C1X) uchun norasmiy ism ISO / IEC 9899: 2011,[1] o'tmish standart uchun C dasturlash tili. U o'rnini egalladi C99 (ISO / IEC 9899: 1999 standarti) va o'rniga qo'yilgan C17 (standart ISO / IEC 9899: 2018). C11 asosan odatiy zamonaviy kompilyatorlar tomonidan qo'llab-quvvatlanadigan funktsiyalarni standartlashtiradi va ko'plarni yaxshiroq qo'llab-quvvatlash uchun batafsil xotira modelini o'z ichiga oladi iplar ijro. Muvofiq C99 dasturlarining kechiktirilganligi sababli, C11 asosiy til standartiga rioya qilishni osonlashtirish uchun ba'zi xususiyatlarni ixtiyoriy qiladi.[2][3]
Oxirgi qoralama, N1570,[4] 2011 yil aprel oyida nashr etilgan. Yangi standart 2011 yil 10 oktyabrda yakuniy loyihasini qayta ko'rib chiqishdan o'tdi va ISO tomonidan rasman ratifikatsiya qilindi va 2011 yil 8 dekabrda ISO / IEC 9899: 2011 nomi bilan nashr etildi, ishtirok etuvchi milliy organlarning qarorini talab qilmasdan.
Standart so'l __STDC_VERSION__ qiymati bilan belgilanadi 201112L C11 yordami mavjudligini ko'rsatish uchun.[5] C11 ning ba'zi xususiyatlari GCC 4.6 versiyasidan boshlab,[6] Jiringlash 3.1 versiyasidan boshlab,[7] IBM XL C 12.1 versiyasidan boshlab.[8]va Microsoft Visual C ++ 2019 yil VS dan boshlab (16,8)[9]
C99-dan o'zgarishlar
Ushbu standart C99 tili va kutubxona xususiyatlariga bir nechta o'zgartirishlarni o'z ichiga oladi, masalan:[10]
- Hizalama spetsifikatsiya (
_Alignalaraniqlovchi,_Alignofoperator,aligned_allocfunktsiyasi,<stdalign.h>sarlavha fayli) - The 
_Noreturnfunktsiya spetsifikatori va<stdnoreturn.h>sarlavha fayli - Yordamida umumiy tipdagi iboralar 
_Umumiykalit so'z. Masalan, quyidagi so'lcbrt (x)ga tarjima qilinadicbrtl (x),cbrt (x)yokicbrtf (x)turiga qarabx: 
#define cbrt (x) _Generic ((x), long double: cbrtl,                               sukut bo'yicha: cbrt,                               suzuvchi: cbrtf) (x)- Ko'p tishli qo'llab-quvvatlash (
_Tread_localsaqlash sinfidagi aniqlovchi,<threads.h>mavzu yaratish / boshqarish funktsiyalari, shu jumladan sarlavha, muteks, shart o'zgaruvchisi va ipga xos saqlash funktsionallik, shuningdek<stdatomic.h>[11] C11 xotira modelini qo'llab-quvvatlovchi atom operatsiyalari uchun). - Yaxshilangan Unicode C Unicode texnik hisobotiga asoslangan qo'llab-quvvatlash ISO / IEC TR 19769: 2004 (
nilufarvachar32_tsaqlash uchun turlari UTF-16/UTF-32 kodlangan ma'lumotlar, jumladan konversiya funktsiyalari<uchar.h>va tegishlisizvaUstring literal prefikslar, shuningdeku8for prefiksi UTF-8 kodlangan adabiyotlar).[12] - Olib tashlash 
oladifunktsiyasi (xavfsizroq foydasigafgets), bu avvalgi C tilini qayta ko'rib chiqishda bekor qilingan, ISO / IEC 9899: 1999 / Cor.3: 2007 (E). - Chegaralarni tekshirish interfeyslar (K ilova).[13]
 - Tahlil qilinadigan xususiyatlar (L-ilova).
 - Suzuvchi nuqta turlarining xususiyatlarini so'rash uchun ko'proq makrolar subnormal suzuvchi nuqta raqamlari va turni saqlashga qodir bo'lgan o'nli raqamlar soni.
 - Anonim tuzilmalar va kasaba uyushmalari, kasaba uyushmalari va tuzilmalar joylashganda foydalidir, masalan. yilda 
tuzilmaviy T { int yorliq; birlashma { suzmoq x; int n; }; };. - Statik tasdiqlar, tarjima paytida undan keyingi bosqichda baholanadi 
#ifva#xato, turlar tarjimon tomonidan tushunilganda. - Eksklyuziv yaratish va ochish rejimi (
"... x"qo'shimchasi) uchunochmoq. Bu shunday harakat qiladiO_CREAT | O_EXCLyilda POSIXuchun odatda ishlatiladi fayllarni qulflash. - The 
tezkor chiqishdasturni tugatishning uchinchi usuli sifatida ishlaydi, agar u tugatilsa, kamida minimal deinitsializatsiyani amalga oshirishga mo'ljallanganChiqishmuvaffaqiyatsiz.[14] - Yangi 
timespec_getfunktsiyasi va unga mos keladigan tuzilish<time.h>darajasi bilan POSIX moslik. - Qurilish uchun makrolar murakkab qadriyatlar (qisman, chunki 
haqiqiy + xayoliy * Iagar kutilgan qiymatni keltirmasaxayoliycheksiz yoki NaN).[15] 
Ixtiyoriy xususiyatlar
Yangi tahrir dasturlarning ayrim qismlarini qo'llab-quvvatlamaslikka imkon beradi, shu jumladan 1999 yilgi tahrirda qo'llab-quvvatlash majburiy bo'lgan ba'zi dasturlarni.[16] Dasturlar ma'lum bir xususiyatni qo'llab-quvvatlaydimi yoki yo'qligini aniqlash uchun dasturlar oldindan belgilangan makroslardan foydalanishi mumkin.
| Xususiyat | Xususiyatlarni sinab ko'rish uchun so'l | C99-da foydalanish[17] | 
|---|---|---|
| Tahlil qilish imkoniyati (L ilova) | __STDC_ANALYZABLE__ | Mavjud emas | 
| Chegaralarni tekshiruvchi interfeyslar (K ilova) | __STDC_LIB_EXT1__ | Mavjud emas | 
Ko'p ishlov berish (<threads.h>) | __STDC_NO_THREADS__ | Mavjud emas | 
Atom ibtidoiy va turlari (<stdatomic.h> va _Atomik turi saralash)[18] | __STDC_NO_ATOMICS__ | Mavjud emas | 
| IEC 60559 suzuvchi nuqta arifmetikasi (ilova F) | __STDC_IEC_559__ | Ixtiyoriy | 
| IEC 60559 mos keladigan murakkab arifmetik (ilova G) | __STDC_IEC_559_COMPLEX__ | Ixtiyoriy | 
Murakkab turlari (<complex.h>) | __STDC_NO_COMPLEX__ | Mezbon dasturlar uchun majburiydir | 
| O'zgaruvchan uzunlik massivlari[19] | __STDC_NO_VLA__ | Majburiy | 
Tanqid
Ixtiyoriy chegaralarni tekshiruvchi interfeyslar (K-ilova) munozarali bo'lib qolmoqda va keng qo'llanilmagan va ularni bekor qilish yoki keyingi standart tahrirdan olib tashlash taklif qilingan.[20] Ushbu interfeysning asosiy tarafdori bo'lgan Microsoft ham ta'rifga mos kelmaydi.[21]  Bunga qo'shimcha ravishda, K ilovasida, masalan, ko'proq foydali TR24731-2 (dinamik ajratish funktsiyalari) mavjud emas vasprintf va open_memstream.[22] Bir nechta ochiq manbali dasturlarga quyidagilar kiradi Watcom-ni oching C / C ++ ning "Xavfsiz C" kutubxonasi[23] va safeclib.[24]
Shuningdek qarang
- C ++ 20, C ++ 17, C ++ 14, C ++ 11, C ++ 03, C ++ 98, C ++ dasturlash tili standartining versiyalari
 - C va C ++ ning mosligi
 
Adabiyotlar
- ^ "ISO / IEC 9899: 2011 - Axborot texnologiyalari - Dasturlash tillari - C". www.iso.org.
 - ^ "WG14 N1250 C1X Nizomi" (PDF).
 - ^ "S standartini o'rnatish". www.open-std.org.
 - ^ WG14 N1570 qo'mitasi loyihasi - 2011 yil 12 aprel
 - ^ "411-sonli kamchiliklar to'g'risida hisobot". ISO / IEC JTC1 / SC22 / WG14 - C. 2012 yil fevral. Olingan 2012-05-04.
 - ^ "GCC 4.6 chiqarilish seriyasi - o'zgarishlar, yangi xususiyatlar va tuzatishlar - GNU loyihasi - bepul dasturiy ta'minot fondi (FSF)". gcc.gnu.org.
 - ^ "Clang 3.1 chiqarilish eslatmalari". llvm.org.
 - ^ "IBM XL C / C ++ kompilyatorlariga qo'shilgan ISO C11-ni qo'llab-quvvatlash". www.ibm.com. 2014 yil 17 aprel.
 - ^ "MSVC-ga etib kelgan C11 va C17 standart qo'llab-quvvatlashi". devblogs.microsoft.com. 14 sentyabr 2020 yil.
 - ^ WG14 N1516 qo'mitasi loyihasi - 2010 yil 4 oktyabr
 - ^ "Atom operatsiyalari kutubxonasi - cppreference.com". en.cppreference.com.
 - ^ "WG14 N1286 -" TR-19769 va yangi belgilar turlarini qo'llab-quvvatlash to'g'risida ", Nik Stoutton, Larri Dvayer" (PDF).
 - ^ Berin Babkok-Makkonnell. "API02-C. Qatorga o'qigan yoki yozgan funktsiyalar manba yoki maqsad hajmini aniqlash uchun argument olishlari kerak".
 - ^ "Jarayondan voz kechish". www.open-std.org.
 - ^ "Kompleks qiymat yaratish". www.open-std.org.
 - ^ WG14 N1548 qo'mitasi loyihasi - 2010 yil 2-dekabr 6.10.8.3 Shartli xususiyat makroslari
 - ^ ISO 9899: 1999 6.10.8 Oldindan belgilangan so'l nomlari
 - ^ "WG14 N1558 14-18 mart kunlari yig'ilish bayonnomalari (qoralama)" (PDF).
 - ^ ISO 9899: 2011 dasturlash tillari - C 6.7.6.2 4
 - ^ "N1969 - K ilovasi bilan yangilangan dala tajribasi - interfeyslarni tekshirish chegaralari". www.open-std.org.
 - ^ Leffler, Jonatan. "c - Siz TR 24731" xavfsiz "funktsiyalaridan foydalanasizmi?". Stack overflow.
 - ^ "c - Siz TR 24731" xavfsiz "funktsiyalaridan foydalanasizmi?". Stack overflow.
 - ^ "Safer C Library - Open Watcom". 2015 yil 3-may.
 - ^ "safec: Xavfsiz C kutubxonasi - README". rurban.github.io.
 
Tashqi havolalar
- C1X nizomi
 - N1570, 2011 yil 12 apreldagi C1X ning yakuniy loyihasi
 - ISO C Ishchi guruhining rasmiy veb-sayti
 - Standart qoralama PDF-ga qo'shimcha ravishda oddiy ASCII va bog'langan HTML shakllarida.
 - Cheklangan API-larning xavfsiz C kutubxonasi
 - Olxo'ri, Tomas (2012 yil 6-aprel). "C nihoyat yangi standartni qo'lga kiritdi". Doktor Dobbning jurnali.
 - Safe C API - buferni to'ldirishning qisqa echimi, OWASP Foundation, OWASP AppSec, Pekin 2011
 
| Oldingi C99  | C tili standartlar | Muvaffaqiyatli C17  |