Inhaltsverzeichnis |
Mit K&R-C wird die C-Variante bezeichnet, wie sie ursprünglich von den Erfindern Brian W. Kernighan und Dennis Ritchie verfasst wurde und in der ersten Auflage ihres Buches The C Programming Language (1978) erschien.
Im Jahre 1983 wurde vom American National Standards Institute (ANSI) ein Komitee namens X3J11 gegründet, um eine Norm für die Programmiersprache C zu entwickeln. Als Grundlage für die Sprachdefinition diente die Programmiersprache C, wie sie von den Erfindern Brian W. Kernighan und Dennis Ritchie (K&R-C) konzipiert wurde.
Nach sechsjähriger Arbeit konnte im Dezember 1989 die Norm ANSI X3.159-1989 Programming Language C verabschiedet werden. Diese Fassung der Sprache C wird aufgrund ihres Erscheinungsjahres auch als C89 bezeichnet. Ein Jahr später, 1990, wurde diese Norm (mit ein paar kleineren Änderungen) von der ISO als Norm ISO/IEC 9899:1990 (C90), übernommen.
Viele der bis dato ungenormten Eigenschaften der Sprache wurden einheitlich festlegt, aber auch neue Sprachmittel wie Funktionsprototypen, ein leistungsfähigerer Präprozessor, sowie die Möglichkeit zur Deklaration von Konstanten, wurden in die Sprache aufgenommen. Die C-Norm räumte dabei unter anderem mit Unklarheiten in der ursprünglichen Definition auf, hierzu zählen die Ausführungsreihenfolge der vier Inkrement- und Dekrement-Operatoren (++, --). Mit der Norm wurden ferner die enthaltenen C-Bibliotheken festgelegt.
Bis heute ist C90 die Sprachbasis für alle Derivate der Programmiersprache C, unter anderem auch für das modernere C++, das über Möglichkeiten zur objektorientierten und generischen Programmierung verfügt.
Ein auf C90 basierendes Programm sollte ohne Probleme von jedem C-Compiler übersetzt und ausgeführt werden können. In der Praxis ist dieses nur sehr bedingt der Fall, da fast alle C-Derivate viele eigene Bibliotheken und Funktionsprototypen benutzten, um auf die individuellen Komponenten des Computers zugreifen zu können.
1995 wurde erneut ein Ausschuss gegründet, um C zu erweitern und zu verbessern. Daraus ging 1999 der neue ISO-Standard ISO/IEC 9899:1999, auch als C99 bezeichnet, hervor. C99 löst den Standard ISO/IEC 9899:1990 (C90) ab.
Zu diesem Standard ist 2001 ein Technical Corrigendum (TC) TC1 erschienen. Dieses Dokument TC1 ist frei verfügbar. Ein weiteres Korrigendum wurde 2004 als Technical Corrigendum 2 veröffentlicht (TC2).
Mit C99 flossen einige aus C++ bekannte Erweiterungen in die Sprache C ein.
Zu den wichtigsten Neuerungen gehören:
and anstelle von &&K&R-C:
Ausgabe(str) char* str; { printf("%s\n", str); } main() { Ausgabe("Hallo Welt!"); return 0; }
C90:
#include <stdio.h> void Ausgabe(char* str) { printf("%s\n", str); } main() { Ausgabe("Hallo Welt!"); return 0; }
C99:
#include <stdio.h> void Ausgabe(char* str) { printf("%s\n", str); } int main(void) // der Rückgabetyp muss angegeben werden { Ausgabe("Hallo Welt!"); // ''return 0;'' muss nicht mehr angegeben werden. }