C99 on C - ohjelmointikielen standardi . Määritelty standardissa ISO/IEC 9899:1999, nykyinen versio on ISO/IEC 9899:1999/Cor 3:2007, päivätty 15.11.2007. Se on C90 - standardin kehitystyö .
ANSI-standardointiprosessin jälkeen C-kielen spesifikaatio pysyi suhteellisen muuttumattomana jonkin aikaa, kun taas C++ jatkoi kehitystä erityisesti standardoinnin aikana. Sääntelymuutos 1 loi uuden C-kielistandardin vuonna 1995 , mutta vain C89-standardin joidenkin yksityiskohtien korjaamisen ja kansainvälisten merkistöjen tuen lisäämisen osalta. Standardia kuitenkin tarkistettiin edelleen 1990-luvun lopulla, mikä johti ISO/IEC 9899:1999 -standardin julkaisemiseen vuonna 1999. Tätä standardia kutsutaan usein nimellä "C99". Se hyväksyttiin ANSI-standardiksi toukokuussa 2000. Kansainvälistä C-standardia ylläpitää ISO/IEC JTC1/SC22 / WG14 -työryhmä .
C99:ään on lisätty useita uusia ominaisuuksia, joista monet on jo toteutettu laajennuksina joissakin kääntäjissä.
C99 on enimmäkseen taaksepäin yhteensopiva C90:n kanssa, mutta on myös joissain tapauksissa jäykempi. Erityisesti ilmoitus ilman tyyppispesifikaatiota ei enää tarkoita implisiittistä tyyppimääritystä int. C-standardikomitea päätti, että kääntäjien olisi tärkeämpää havaita tahaton tyyppimerkinnän puute kuin "hiljaisesti" käsitellä vanhaa koodia, joka perustui implisiittiseen tyyppimerkintään int. Käytännössä kääntäjät saattoivat havaita puutteen, mutta myös olettivat sen olevan intja jatkoivat ohjelman kääntämistä.
GCC ja muut C-kääntäjät tukevat monia C99-standardin ominaisuuksia. Suuret kehitystyökalutoimittajat, kuten Microsoft ja Borland , jotka ovat keskittyneet ensisijaisesti C++-kieleen, eivät kuitenkaan ole tukeneet standardia, sillä C++ tarjoaa samanlaisia toimintoja kuin standardin innovaatiot.
GCC, huolimatta laajennetusta C99-tuesta, ei ole edelleenkään täysin yhteensopiva toteutus: joitain ominaisuuksia ei ole otettu käyttöön tai ne toimivat väärin. [yksi]
Sun Microsystemsin mukaan Sun Studio 9 ja uudemmat (joka on ladattavissa ilmaiseksi) on C99-sertifioitu UltraSPARC-, Intel x86- ja AMD 64 -prosessoreille. [2] Myös IBM XL C/C++ -sertifioitu Power PC -prosessoreille. Mukana on virallisia kääntäjiä muista yrityksistä. Ch C -tulkki tukee C99:n [3] pääominaisuuksia ja on vapaasti saatavilla Windows-, Linux-, Mac OS X-, Solaris-, QNX- ja FreeBSD-versioina.
__STDC_VERSION__Arvolla määritetty vakiomakro 199901Losoittaa, että C99-tuki on saatavilla. Kuten makroa __STDC__C90:lle, makroa __STDC_VERSION__voidaan käyttää koodin kirjoittamiseen, joka käännetään eri tavalla C90- ja C99-kääntäjillä. Alla on esimerkki, joka __STDC_VERSION__tarkistaa makron avulla, onko inline avainsana .
#if __STDC_VERSION__ >= 199901L /* "inline" on avainsana */ #else #define inline /* ei mitään */ #loppu JosC99-standardin ratifioinnin jälkeen standardityöryhmä laati teknisen raportin, joka sisälsi seuraavat parannukset: parannettu tuki inline-käsittelylle, lisämerkkitietotyypit (tuki Unicodelle ), kirjastotoiminnot parannetulla validoinnilla . Työ jatkuu teknisten raporttien parissa, jotka liittyvät desimaaliliukulukuihin , matemaattisiin lisäerikoisfunktioihin ja lisätoimintoihin dynaamisesti varatun muistin kanssa . C- ja C++-standardikomiteat työskentelevät yhdessä monisäikeisen ohjelmoinnin spesifikaatioiden parissa.
Vuonna 2007 aloitettiin C-kielistandardin uuden version valmistelu, epävirallisesti nimeltään "C1 x ". C-standardikomitea on tukenut strategiaa, jonka pitäisi rajoittaa sellaisten uusien kehityskulkujen sisällyttämistä, joita ei ole "testattu" olemassa olevilla toteutuksilla.
Todennäköisesti vakiotoimintoa gets, joka on virallisesti vanhentunut lukuisten epäturvallisesti suunniteltujen liitäntöjen ongelmaraporttien vuoksi, ei sisällytetä C-kielistandardin seuraavaan versioon.
C-ohjelmointikieli | |
---|---|
Kääntäjät |
|
Kirjastot | |
Erikoisuudet | |
Jotkut jälkeläiset | |
C ja muut kielet |
|
Luokka: C-ohjelmointikieli |