C11 (C standard revision)

C11 (previously C1X, formally ISO/IEC 9899:2011),[1] is a past standard for the C programming language. It replaced C99 (standard ISO/IEC 9899:1999) and has been superseded by C17 (standard ISO/IEC 9899:2018). C11 mainly standardizes features already supported by common contemporary compilers, and includes a detailed memory model to better support multiple threads of execution. Due to delayed availability of conforming C99 implementations, C11 makes certain features optional, to make it easier to comply with the core language standard.[2][3]

The final draft, N1570,[4] was published in April 2011. The new standard passed its final draft review on October 10, 2011 and was officially ratified by ISO and published as ISO/IEC 9899:2011 on December 8, 2011, with no comments requiring resolution by participating national bodies.

A standard macro __STDC_VERSION__ is defined with value 201112L to indicate that C11 support is available.[5]

Changes from C99

The standard includes several changes to the C99 language and library specifications, such as[6]

  • Alignment specification (_Alignas specifier, _Alignof operator, aligned_alloc function, <stdalign.h> header)
  • The _Noreturn function specifier and the <stdnoreturn.h> header
  • Type-generic expressions using the _Generic keyword. For example, the following macro cbrt(x) translates to cbrtl(x), cbrt(x) or cbrtf(x) depending on the type of x:
#define cbrt(x) _Generic((x), long double: cbrtl, \
                              default: cbrt, \
                              float: cbrtf)(x)
  • Multi-threading support (_Thread_local storage-class specifier, <threads.h> header including thread creation/management functions, mutex, condition variable and thread-specific storage functionality, as well as <stdatomic.h>[7] for atomic operations supporting the C11 memory model).
  • Improved Unicode support based on the C Unicode Technical Report ISO/IEC TR 19769:2004 (char16_t and char32_t types for storing UTF-16/UTF-32 encoded data, including conversion functions in <uchar.h> and the corresponding u and U string literal prefixes, as well as the u8 prefix for UTF-8 encoded literals).[8]
  • Removal of the gets function (in favor of safer fgets), which was deprecated in the previous C language standard revision, ISO/IEC 9899:1999/Cor.3:2007(E).
  • Bounds-checking interfaces (Annex K).[9]
  • Analyzability features (Annex L).
  • More macros for querying the characteristics of floating-point types, concerning subnormal floating-point numbers and the number of decimal digits the type is able to store.
  • Anonymous structures and unions, useful when unions and structures are nested, e.g. in struct T { int tag; union { float x; int n; }; };.
  • Static assertions, which are evaluated during translation at a later phase than #if and #error, when types are understood by the translator.
  • An exclusive create-and-open mode ("…x" suffix) for fopen. This behaves like O_CREAT|O_EXCL in POSIX, which is commonly used for lock files.
  • The quick_exit function as a third way to terminate a program, intended to do at least minimal deinitialization.[10]
  • A new timespec_get function and corresponding structure in <time.h> with a degree of POSIX compatibility.
  • Macros for the construction of complex values (partly because real + imaginary*I might not yield the expected value if imaginary is infinite or NaN).[11]

Optional features

The new revision allows implementations to not support certain parts of the standard — including some that had been mandatory to support in the 1999 revision.[12] Programs can use predefined macros to determine whether an implementation supports a certain feature or not.

Optional features in C11
Feature Feature test macro Availability in C99[13]
Analyzability (Annex L) __STDC_ANALYZABLE__ Not available
Bounds-checking interfaces (Annex K) __STDC_LIB_EXT1__ Not available
Multithreading (<threads.h>) __STDC_NO_THREADS__ Not available
Atomic primitives and types (<stdatomic.h> and the _Atomic type qualifier)[14] __STDC_NO_ATOMICS__ Not available
IEC 60559 floating-point arithmetic (Annex F) __STDC_IEC_559__ Optional
IEC 60559 compatible complex arithmetic (Annex G) __STDC_IEC_559_COMPLEX__ Optional
Complex types (<complex.h>) __STDC_NO_COMPLEX__ Mandatory for hosted implementations
Variable-length arrays[15] __STDC_NO_VLA__ Mandatory

Compiler support

Some features of C11 are supported by the GCC starting with version 4.6,[16] Clang starting with version 3.1,[17] IBM XL C starting with version 12.1,[18] and Microsoft Visual C++ starting with VS 2019 (16.8)[19] in September 2020.

Criticism

The optional bounds-checking interfaces (Annex K) remain controversial and have not been widely implemented, and their deprecation or removal from the next standard revision has been proposed.[20] Even Microsoft, a main proponent of this interface, does not conform to the definition.[21] In addition, Annex K does not include the more useful TR24731-2 (dynamic allocation functions), such as vasprintf and open_memstream.[22] The few open-source implementations include Open Watcom C/C++'s "Safer C" library[23] and safeclib.[24]

See also

References

  1. ^ "ISO/IEC 9899:2011 - Information technology -- Programming languages -- C". www.iso.org.
  2. ^ "WG14 N1250 The C1X Charter" (PDF).
  3. ^ "Subsetting the C Standard". www.open-std.org.
  4. ^ WG14 N1570 Committee Draft — April 12, 2011
  5. ^ "Defect report #411". ISO/IEC JTC1/SC22/WG14 - C. February 2012. Retrieved 2012-05-04.
  6. ^ WG14 N1516 Committee Draft — October 4, 2010
  7. ^ "Atomic operations library - cppreference.com". en.cppreference.com.
  8. ^ "WG14 N1286 — "On Support for TR-19769 and New Character Types", Nick Stoughton, Larry Dwyer" (PDF).
  9. ^ Berin Babcock-McConnell. "API02-C. Functions that read or write to or from an array should take an argument to specify the source or target size".
  10. ^ "Abandoning a Process". www.open-std.org.
  11. ^ "Creation of complex value". www.open-std.org.
  12. ^ WG14 N1548 Committee Draft — December 2, 2010 6.10.8.3 Conditional feature macros
  13. ^ ISO 9899:1999 6.10.8 Predefined macro names
  14. ^ "WG14 N1558 Mar 14-18 meeting minutes (draft)" (PDF).
  15. ^ ISO 9899:2011 Programming Languages - C 6.7.6.2 4
  16. ^ "GCC 4.6 Release Series — Changes, New Features, and Fixes - GNU Project - Free Software Foundation (FSF)". gcc.gnu.org.
  17. ^ "Clang 3.1 Release Notes". llvm.org.
  18. ^ "Support for ISO C11 added to IBM XL C/C++ compilers". www.ibm.com. 17 April 2014.
  19. ^ "C11 and C17 Standard Support Arriving in MSVC". devblogs.microsoft.com. 14 September 2020.
  20. ^ "N1969 — Updated Field Experience With Annex K — Bounds Checking Interfaces". www.open-std.org.
  21. ^ Leffler, Jonathan. "c - Do you use the TR 24731 'safe' functions?". Stack Overflow.
  22. ^ "c - Do you use the TR 24731 'safe' functions?". Stack Overflow.
  23. ^ "Safer C Library - Open Watcom". 3 May 2015. Archived from the original on 2015-05-03.
  24. ^ "safec: Safe C Library - README". rurban.github.io.

Further reading

Preceded by C language standards Succeeded by

Read other articles:

459-та окрема ракетна бригада Нарукавний знак бригадиЗасновано 7 вересня 1987Країна  Радянський Союз → УкраїнаВид Сухопутні військаТип  Ракетні війська і артилеріяУ складі Південна група військКиївський військовий округОб'єднані сили швидкого реагування 8 ар

Este artigo carece de reciclagem de acordo com o livro de estilo. Sinta-se livre para editá-lo(a) para que este(a) possa atingir um nível de qualidade superior. (Março de 2018) Esta página ou seção foi marcada para revisão devido a incoerências ou dados de confiabilidade duvidosa. Se tem algum conhecimento sobre o tema, por favor, verifique e melhore a coerência e o rigor deste artigo.Considere colocar uma explicação mais detalhada na discussão. As referências deste artigo necess...

Raoul II of ClermontRaoul II de ClermontConstable of FranceReign1285–1302Grand Chamberlain of FranceReign1283–1302Seigneur of NesleReign1286–1302Viscount of Châteaudun jure uxorisReignc. 1268–1302Bornc. 1245Died1302KortrijkSpouseAlix of Dreux Isabelle of HainaultIssueAlixIsabelleBeatrixHouseHouse of Clermont-en-Beauvaisisalso House of Creilalso House of Clermont-NesleFatherSimon II of ClermontMotherAdele of Montfort Coat of arms used by Raoul II of Clermont. It is a combination of Cl...

2019 coming-of-age comedy film Good BoysTheatrical release posterDirected byGene StupnitskyWritten by Lee Eisenberg Gene Stupnitsky Produced by Lee Eisenberg Evan Goldberg Seth Rogen James Weaver Starring Jacob Tremblay Keith L. Williams Brady Noon Molly Gordon Lil Rel Howery Midori Francis CinematographyJonathan FurmanskiEdited byDaniel GabbeMusic byLyle WorkmanProductioncompanies Good Universe Point Grey Pictures Quantity Entertainment Distributed byUniversal PicturesRelease dates March...

Forza Motorsport 4 Información generalDesarrollador Turn 10 StudiosDistribuidor Microsoft StudiosDatos del juegoGénero Videojuego de carrerasModos de juego Un jugador, MultijugadorClasificaciones ESRBPEGIUSKDatos del softwarePlataformas Xbox 360Datos del hardwareDispositivos de entrada mando de videojuegos DesarrolloLanzamiento JP 20 de octubre de 2011NA 11 de octubre de 2011EU 14 de octubre de 2011AUS 13 de octubre de 2011ForzaForza Motorsport 3Forza Motorsport 4Forza HorizonEnlaces Sitio ...

Campeonato MundialPiscina Curta 2014 Nado crawl/livre 50 m masc fem 100 m masc fem 200 m masc fem 400 m masc fem 800 m fem 1500 m masc Nado costas 50 m masc fem 100 m masc fem 200 m masc fem Nado bruços/peito 50 m masc fem 100 m masc fem 200 m masc fem Nado mariposa/borboleta 50 m masc fem 100 m masc fem 200 m masc fem Estilos/medley 100 m masc fem 200 m masc fem 400 m masc fem Revezamento/livre 4x50 m masc fem 4x100 m masc fem 4x200 m masc fem Revezamento/medley 4x50 m masc fem 4x100 m masc...

Hospital in Gateshead, United KingdomQueen Elizabeth HospitalGateshead Health NHS Foundation TrustQueen Elizabeth HospitalShown in Tyne and WearGeographyLocationGateshead, United KingdomCoordinates54°56′20″N 1°34′50″W / 54.939°N 1.5806°W / 54.939; -1.5806OrganisationCare systemNHS EnglandTypeDistrict GeneralAffiliated universityNewcastle University Medical SchoolServicesEmergency departmentYes Accident & EmergencyHistoryOpened1948LinksWebsitewww.qegates...

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (يونيو 2021) هند سيف البار معلومات شخصية اسم الولادة هند سيف أحمد البار الميلاد 16 يناير 1989 (34 سنة)  الإمارات العربية المتحدة الجنسية إماراتية الديانة الإسلام الحياة ال...

The Shop on Main StreetPoster filmSutradara Ján Kadár Elmar Klos ProduserDitulis olehBerdasarkanNovel:Ladislav GrosmanPermainan latar:Ladislav GrosmanJán KadárElmar KlosPemeranIda KamińskaJozef KronerHana SlivkováMartin Hollý, Sr.František ZvaríkMartin GregorPenata musikZdeněk LiškaSinematograferVladimír NovotnýPenyuntingDiana HeringováJaromír JanáčekTanggal rilis 8 Oktober 1965 (1965-10-08) Durasi125 menitNegara Cekoslowakia Bahasa Slowakia Yiddi Pendapatankotor$1...

Manfred Carstens (Mitte) 1991 Manfred Carstens (* 23. Februar 1943 in Molbergen)[1] ist ein deutscher Politiker (CDU). Er war von 1989 bis 1993 Parlamentarischer Staatssekretär beim Bundesminister der Finanzen, von 1993 bis 1997 beim Bundesminister für Verkehr und von 1997 bis 1998 beim Bundesminister des Innern. Inhaltsverzeichnis 1 Leben und Beruf 2 Partei 3 Abgeordneter 4 Öffentliche Ämter 5 Vereinszugehörigkeit 6 Siehe auch 7 Literatur 8 Weblinks 9 Einzelnachweise Leben und B...

本條目存在以下問題,請協助改善本條目或在討論頁針對議題發表看法。 此條目需要編修,以確保文法、用詞、语气、格式、標點等使用恰当。 (2019年11月5日)請按照校對指引,幫助编辑這個條目。(幫助、討論) 此條目需要补充更多来源。 (2020年3月9日)请协助補充多方面可靠来源以改善这篇条目,无法查证的内容可能會因為异议提出而被移除。致使用者:请搜索一下条目的

A Supertaça Cândido de Oliveira foi a 24ª edição da Supertaça Cândido de Oliveira. Jogou-se a 18 de Agosto de 2002, no Estádio do Bonfim, em Setúbal. O jogo opôs o Sporting Clube de Portugal, vencedor da Primeira Liga e o Leixões Sport Club, que ficou em 2º lugar na Taça de Portugal, vencida também pelo Sporting Clube de Portugal. Ficha de Jogo 18 de Agosto de 2002 - Predefinição:Nuevo Colombino (Huelva) - Público: Não disponível Árbitro(s): Principal: João Ferreira Assis...

MaharshiCharakaMonumen Charaka di kampus Patanjali YogpeethLahirCharakaca.  Abad ke-1 MasehiIndia KunoMeninggalca.  Abad ke-2 MasehiDikenal atasCharaka SamhitaKarier ilmiahBidangKedokteran Charaka adalah salah satu kontributor utama Ayurweda, sebuah sistem pengobatan dan gaya hidup yang berkembang di India Kuno. Ia dikenal sebagai penyunting risalah pengobatan berjudul Charaka Samhita, salah satu teks fundasional dari pengobatan India klasik dan Ayurweda. Charaka diidentifikasikan...

Downing Street Nomor 11Informasi umumGaya arsitekturGeorgianKotaKota WestminsterLondon, SW1NegaraBritania RayaKoordinat51°30′12″N 0°07′40″W / 51.503396°N 0.127640°W / 51.503396; -0.127640Koordinat: 51°30′12″N 0°07′40″W / 51.503396°N 0.127640°W / 51.503396; -0.127640Penyewa sekarangKepala Perbendaharaan Kedua(Kementerian Keuangan Britania Raya)Mulai dibangun1682; 340 tahun lalu (1682)Rampung1684; 338 tahun lalu (...

Chemical compound This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Hymecromone – news · newspapers · books · scholar · JSTOR (January 2021) (Learn how and when to remove this template message) HymecromoneClinical dataOther names4-MethylumbelliferoneAHFS/Drugs.comInternational Drug NamesATC codeA05AX02 (W...

Spicy fermented Korean condiment GochujangAlternative namesRed chili pastePlace of originKoreaAssociated cuisineKorean cuisineMain ingredientsGochu-garu (chili powder), glutinous rice, meju-garu (fermented soybean powder)Other informationHS code: 2103.90.1030 Cookbook: Gochujang  Media: Gochujang Korean nameHangul고추장Hanja苦椒醬Revised Romanizationgochu-jangMcCune–Reischauerkoch'u-changIPA[ko.tɕʰu.dʑaŋ] This article is part of a series onKorean cuisine한국 요...

Komando Resor Militer 172/Praja Wira YakthiDibentuk7 November 1976Negara IndonesiaCabangTNI Angkatan DaratTipe unitKorem Tipe APeranSatuan TeritorialBagian dariKodam XVII/CenderawasihMakoremWamena, Papua PegununganJulukanKorem 172/PWYPelindungTentara Nasional IndonesiaMotoMengobati dan Menyembuhkan Luka, Mengubur Dendam, Memperkuat KohesiBaret H I J A U Ulang tahun7 NovemberTokohKomandanBrigadir Jenderal TNI Dedi HardonoKepala StafKolonel Inf. Bayu Sudarmanto Komando Resor Mili...

Town in Texas, United StatesKurten, TexasTownKurtenCoordinates: 30°47′13″N 96°15′50″W / 30.78694°N 96.26389°W / 30.78694; -96.26389CountryUnited StatesStateTexasCountyBrazosGovernment • MayorChris CourtArea[1] • Total4.62 sq mi (11.96 km2) • Land4.55 sq mi (11.79 km2) • Water0.06 sq mi (0.16 km2)Elevation[2]341 ft (104 m)Population (20...

تحتاج هذه المقالة كاملةً أو أجزاءً منها لإعادة الكتابة حسبَ أسلوب ويكيبيديا. فضلًا، ساهم بإعادة كتابتها لتتوافق معه. عبد العزيز بن سعود البابطين معلومات شخصية الميلاد 1936 (العمر 87 سنة) الكويت الجنسية كويتي عضو في مجمع اللغة العربية بدمشق  الحياة العملية المهنة شاعر ...

Once Upon a Time in HollywoodPoster filmSutradara Quentin Tarantino Produser David Heyman Shannon McIntosh Quentin Tarantino Ditulis oleh Quentin Tarantino Pemeran Leonardo DiCaprio Brad Pitt Margot Robbie Emile Hirsch Margaret Qualley Timothy Olyphant Austin Butler Dakota Fanning Bruce Dern Al Pacino NaratorKurt RussellSinematograferRobert RichardsonPenyuntingFred Raskin[1]Perusahaanproduksi Columbia Pictures Bona Film Group Heyday Films Visiona Romantica DistributorSony Pictures Rel...