ANSI C on ANSI-standardi C-kielelle.[1]
ANSI C korvasi aiemman K&R C -version, joka syntyi Brian Kernighanin ja Dennis Ritchien toimesta ennen varsinaista standardia.[1][2] Kernighan ja Ritchie julkaisivat vuonna 1978 kirjan The C Programming Language, jossa K&R-versio kielestä oli approksimaatio standardille, mutta tarve muodolliselle standardille oli ilmeinen vuonna 1982.[2] Vuonna 1982 käytössä ollut versio ei ollut sama kuin kirjassa kuvattu ja eri kääntäjissä ei ollut mukana uusimpia muutoksia.[2] K&R ei ollut myöskään riittävän tarkka monissa kielen yksityiskohdissa.[2] Myöskään Stephen Johnsonin Portable C Compiler ei enää ollut sopiva referenssikääntäjänä.[2]
Myös kielen käyttö projekteissa, joita koskivat kaupalliset ja valtion hallinon sopimukset aiheutti paineita standardin muodostamiselle.[2]
Vuonna 1983 ANSI perusti X3J11-komitean stadardoimaan C-kieli.[1][2]
ANSI X3.159-1989 -standardi hyväksyttiin 14. joulukuuta 1989 ja julkaistiin keväällä 1990.[1] ANSI-standardi korvattiin kansainvälisellä ISO-standardina (ISO C) nimellä ISO/IEC 9899:1990, joka oli ISO/IEC JTC 1 -ryhmän työtä.[1] Standardit erotetaan myös nimillä C89 ja C90.[1]
X/Open käyttää standardointia edeltävästä versiosta tietyissä yhteyksissä termiä X/Open C.[3]
Myöhemmin standardista on julkaistu useita pävitysversioita:
- ISO/IEC 9899:1990/Amd 1:1995, Amendment 1 (C95)[4][5]
- ISO/IEC 9899:1990/Cor 1:1994[6]
- ISO/IEC 9899:1990/Cor 2:1996[7]
- ISO/IEC 9899:1999, C99
- ISO/IEC 9899:1999/Cor 1:2001[8]
- ISO/IEC 9899:1999/Cor 2:2004[9]
- ISO/IEC 9899:1999/Cor 3:2007[10]
- ISO/IEC 9899:2011, C11
- ISO/IEC 9899:2011/Cor 1:2012[11]
- ISO/IEC 9899:2018, C18
- tuleva versio on C23 (ISO/IEC CD 9899[12])
Muutokset aiempaan
ANSI C -versiossa on useita eroja K&R C -versioon, joita ovat esimerkiksi funktioiden prototyyppien käsittelyssä, esikääntäjän toiminnan määrittelyssä ja uudet avainsanat.[13] Yhteenveto K&R ja ANSI -versioiden eroista on lueteltu The C Programming Language -kirjan toisessa painoksessa (Second Edition, 1988).[14][15] Standardissa C-kieleen on otettu eräitä vaikutteita C++-kielestä (muun muassa const
-käyttö ja prototyyppien käsittely).[15]
Lähteet