C99

ohjelmointikieli From Wikipedia, the free encyclopedia

Remove ads

C99 (ent. C9X) on C-kielen versio, joka on ISO-standardi ISO/IEC 9899:1999 (1999).[1]

Versio laajentaa C90 (1990) ominaisuuksia. Versio on korvattu C11 (2011) versiolla.[2]

Standardissa on määritelty tukea eräissä muissa kielissä yleistyneille toiminnoille ja mm. päivitetty tietotyyppien tukea.

Standardille on julkaistu kolme korjausta:

  • ISO/IEC 9899:1999/Cor 1:2001[3]
  • ISO/IEC 9899:1999/Cor 2:2004[4]
  • ISO/IEC 9899:1999/Cor 3:2007[5]
Remove ads

Ominaisuudet

Uudessa standardissa on lisätty ja kehitetty ominaisuuksia:[1]

  • inline funktioiden tuki
  • uusia datatyyppejä tyyppijärjestelmään: long long int, boolean-tietotyyppi bool, sekä complex tietotyyppi[6]
  • restrict-avainsana muuttujien optimointia varten
  • C++ tyyppiset //-alkuiset kommentit
  • muuttujia ei tarvise määritellä enää lohkon alussa
  • automaattisen taulukkomuuttujan varaus parametrin avulla (ns. VLA, Variable Length Array)
  • makrot vaihtelevanpituisin argumentein
  • uusia funktiokirjastoja <stdbool.h>, <complex.h>, <tgmath.h>, <inttypes.h> ja funktioita kuten snprintf
  • määritellyn levyiset kokonaisluvut
  • parannettu tuki IEEE-liukuluvuille
  • escape-koodit Unicode-merkeille

C99 vaatii toteutusta antamaan diagnostiikan kun tietotyyppinä on implisiittisesti kokonaislukutyyppi int.[7] Esimerkiksi ennen C99:ää voi olla:[7]

extern x;
f(y)
{
    register z = g(x) + y;
    return z;
}

.. jossa x, y ja z käsiteltiin tyyppinä int.[7]

Remove ads

Joustavat taulukot

C99:ssä on määritelty joustavan kokoiset taulukkojäsenet viimeisenä elementtinä struct-tietueille, joilla on useampi kuin yksi nimetty jäsenmuuttuja. Joustavat taulukot ovat määritellään tyhjänä indeksinä, jolla viitataan muuttuvapituiseen tietoon muodossa taulukon_tunniste[]. Esimerkiksi:[8]

struct Foo {
   int a;
   int b[];
};

.. jossa b on muuttuvapituinen taulukko. Koska muuttuvapituinen taulukko on epätäydellinen tyyppi sen kokoa ei saa selville sizeof-operaattorilla.[8]

Aiemmin on käytetty yhden elementin pituisia taulukkoja.[9] GCC-kääntäjässä on laajennus, joka tukee nolla-pituisia taulukkoja sekä se tukee C99-standardin mukaisia joustavia taulukkoja.[10] Joustavilla taulukoilla voidaan välttää tiettyjä virheitä.[11]

Remove ads

Lähteet

Aiheesta muualla

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads