C11
- För vagntypen C11, se C11 (manövervagn).
C11, formellt ISO/IEC 9899:2011,[1] är en äldre (2011) standard för programspråket C. Under standardiseringsarbetet kallades den nya versionen för C1X. Det sista utkastet antogs officiellt av ISO som standard den 8 december 2011 och ersätter den tidigare standarden C99. C11 ersätts av standarden C17 (ISO/IEC 9899:2018) sedan juni 2018.[2]
C11 standardiserar främst funktioner som redan har brett stöd bland C-kompilatorer. En stor nyhet är att ett bibliotek för trådning har införts. Samtidigt har flera funktioner gjorts frivilliga, så att en C-kompilator inte behöver stödja dem.
Ändringar från C99
[redigera | redigera wikitext]Bland tilläggen från den förra versionen, C99, i språket och biblioteken finns:
- Ett system för att specificera och testa minnesjustering av data, vilket inkluderar nyckelorden
_Alignas
ochalignof
. - Nyckelordet
_Noreturn
, som specificerar att en funktion inte kommer att returnera. - Typgeneriska uttryck med hjälp av nyckelordet
_Generic
. - Stöd för trådning genom biblioteken
<threads.h>
och<stdatomic.h>
, samt nyckelorden_Thread_local
och_Atomic
. - Förbättrat stöd för Unicode.
- Icke namngivna
struct
- ochunion
-strukturer. - Statiska tester (assertions) som till skillnad från preprocessorn har tillgång till bland annat variabeltyper.
- Fillåsning.
Utöver dessa tillägg har funktionen gets
tagits bort till förmån till den säkra funktionen gets_s
.
Frivilliga funktioner
[redigera | redigera wikitext]C11 tillåter implementationer att utelämna vissa delar av standarden, även sådana som var obligatoriska i C99. Ett program kan använda makron för att testa om en funktion finns tillgänglig vid kompileringen. Ett exempel är stödet för komplexa typer, som är frivilligt i C11 men ett krav för C99-kompatibilitet. För att testa i fall en kompilator har stöd för komplexa typer och biblioteket <complex.h>
kan man testa om makrot __STDC_NO_COMPLEX__
är definierat.
Referenser
[redigera | redigera wikitext]- ^ http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=57853
- ^ 14:00-17:00. ”ISO/IEC 9899:2018” (på engelska). ISO. https://www.iso.org/standard/74528.html. Läst 10 januari 2023.
Se även
[redigera | redigera wikitext]Externa länkar
[redigera | redigera wikitext]- N1570, det sista utkastet av C1X, 12 april 2011