ANSI C

Wikipediasta
(Ohjattu sivulta C89)
Siirry navigaatioon Siirry hakuun

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

[muokkaa | muokkaa wikitekstiä]

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]

  1. a b c d e f Brad Kelechava: The Origin of ANSI C and ISO C blog.ansi.org. 14.9.2017. Viitattu 21.11.2022. (englanniksi)
  2. a b c d e f g Ritchie, Dennis M.: The Development of the C Language bell-labs.com. Viitattu 24.7.2017.
  3. X/Open Guide XPG3-XPG4 Base Migration Guide, Version 2 (PDF) (sivu 241) archive.opengroup.org. Viitattu 21.11.2022. (englanniksi)
  4. ISO/IEC 9899:1990/Amd 1:1995 iso.org. Viitattu 23.11.2022. (englanniksi)
  5. Clive D.W. Feather: A brief description of Normative Addendum 1 lysator.liu.se. Viitattu 23.11.2022. (englanniksi)
  6. https://www.iso.org/standard/24271.html
  7. https://www.iso.org/standard/27110.html
  8. https://www.iso.org/standard/35952.html
  9. https://www.iso.org/standard/41326.html
  10. https://www.iso.org/standard/50510.html
  11. https://www.iso.org/standard/61717.html
  12. https://www.iso.org/standard/82075.html
  13. The Differences Between K&R Sun C and Sun ANSI/ISO C docs.oracle.com. Viitattu 29.11.2022. (englanniksi)
  14. Converting to ANSI C h.eng.cam.ac.uk. Viitattu 29.11.2022. (englanniksi)
  15. a b Brian W. Kernighan & Dennis M. Ritchie: The C Programming Language, s. 259–261. Prentice Hall, 1988. ISBN 0-13-110370-9 (englanniksi)