C99

C99  är C-programmeringsspråksstandarden . Definierat i ISO/IEC 9899:1999, nuvarande version är ISO/IEC 9899:1999/Cor 3:2007 daterad 2007-11-15. Det är en utveckling av C90- standarden .

Historik

Efter ANSI-standardiseringsprocessen förblev C-språkspecifikationen relativt oförändrad under en tid, medan C++ fortsatte att utvecklas, särskilt under dess standardisering. Regulatory Amendment 1 skapade en ny C-språkstandard 1995 , men bara när det gäller att fixa vissa detaljer i C89-standarden och lägga till mer stöd för internationella teckenuppsättningar. Standarden reviderades dock ytterligare i slutet av 1990-talet, vilket ledde till publiceringen av ISO/IEC 9899:1999 1999. Denna standard kallas ofta "C99". Den antogs som en ANSI-standard i maj 2000. Den internationella C-standarden underhålls av arbetsgruppen ISO/IEC JTC1/SC22 /WG14 .

Nya funktioner

Flera nya funktioner har lagts till i C99, av vilka många redan har implementerats som tillägg i vissa kompilatorer.

Bakåtkompatibel med C90

C99 är mestadels bakåtkompatibel med C90, men är också styvare i vissa fall. I synnerhet innebär en deklaration utan typspecifikation inte längre en implicit typspecifikation int. C-standardkommittén beslutade att det skulle vara viktigare för kompilatorer att upptäcka oavsiktlig utelämnande av typbeteckning än att "tyst" hantera gammal kod som förlitade sig på implicit typbeteckning int. I praktiken kunde kompilatorer upptäcka ett utelämnande, men antog också att det var intoch fortsatte att kompilera programmet.

Stöd av vanliga kompilatorer

GCC och andra C-kompilatorer stöder många av funktionerna i C99-standarden. Däremot har det saknats stöd för standarden från stora leverantörer av utvecklingsverktyg som Microsoft och Borland , som främst har fokuserat på C++-språket, eftersom C++ tillhandahåller funktionalitet som liknar den som tillhandahålls av standardens innovationer.

GCC, trots sitt utökade stöd för C99, är fortfarande inte en helt kompatibel implementering: vissa funktioner är inte implementerade eller fungerar felaktigt. [ett]

Enligt Sun Microsystems är Sun Studio 9 och senare (som är tillgänglig för gratis nedladdning) C99-certifierad för UltraSPARC-, Intel x86-, AMD 64-processorer [2] Även IBM XL C/C++-certifierad för Power PC-processorer. Det finns legitimerade översättare från andra företag. Ch C-tolken stöder huvudfunktionerna i C99 [3] och är fritt tillgänglig i versioner för Windows, Linux, Mac OS X, Solaris, QNX och FreeBSD.

Versionsidentifiering

Standardmakrot som __STDC_VERSION__definieras med värdet 199901Lindikerar att C99-stöd är tillgängligt. Liksom ett makro __STDC__för C90 kan ett makro __STDC_VERSION__användas för att skriva kod som kommer att kompileras på olika sätt på C90- och C99-kompilatorer. Nedan är ett exempel som använder ett makro för att __STDC_VERSION__kontrollera om inline nyckelordet är .

#if __STDC_VERSION__ >= 199901L /* "inline" är ett nyckelord */ #else #define inline /* ingenting */ #endif

Anvisningar för utvecklingen av standarden

Efter ratificeringen av C99-standarden tog standardarbetsgruppen fram en teknisk rapport som innehöll följande förbättringar: förbättrat stöd för inline-bearbetning, ytterligare teckendatatyper (stöd för Unicode ), biblioteksfunktioner med förbättrad validering . Arbetet fortsätter med tekniska rapporter relaterade till decimaltal med flyttal , ytterligare matematiska specialfunktioner och ytterligare funktioner för att arbeta med dynamiskt allokerat minne . C- och C++-standardkommittéerna arbetar tillsammans med specifikationer för flertrådsprogrammering .

Under 2007 påbörjades arbetet med att förbereda en ny revidering av språkstandarden C, informellt kallad "C1 x ". C Standards Committee har stött en strategi som bör begränsa inkluderingen av nya utvecklingar som inte "testas" av befintliga implementeringar.

Med största sannolikhet kommer standardfunktionen gets, som officiellt utfasades på grund av många problemrapporter angående osäkert designade gränssnitt, inte att inkluderas i nästa revidering av C-språkstandarden.

Se även

Anteckningar

  1. GCC C99-funktionssupportstatus (nedlänk) . Free Software Foundation Inc. (22 november 2007). Tillträdesdatum: 9 januari 2008. Arkiverad från originalet den 19 mars 2012. 
  2. Sun Studio 12: C Compiler 5.9 Readme (nedlänk) . Sun Microsystems Inc. (31 maj 2007). Tillträdesdatum: 9 januari 2008. Arkiverad från originalet den 19 mars 2012. 
  3. C/C++ tolk Ch C99 funktioner (nedlänk) . SoftIntegration Inc. (15 februari 2008). Hämtad 15 februari 2008. Arkiverad från originalet 19 mars 2012. 

Ytterligare källor