Varianten der Programmiersprache C
ANSI C ist eine von dem American National Standards Institut (ANSI) entwickelte Norm, die eine allgemeingültige Definition der Syntax für die Programmiersprache C beschreibt.
Im Jahre 1983 wurde von ANSI ein Komitee namens X3J11 gegründet, um eine Norm für die Programmiersprache C zu entwickeln. Nach 6-jähriger Arbeit konnte im Dezember 1989 die Norm ANSI X3.159-1989 Programming Language C verabschiedet werden, die heute im allgemeinen Sprachgebrauch als ANSI C bezeichnet wird.
Als Basis diente dabei die Programmiersprache C von Brian W. Kernighan und Dennis Ritchie (K&R C), zu der ANSI C eine direkte Erweiterung darstellte, die viele der bis dato ungenormten Eigenschaften der Sprache einheitlich festlegte, aber auch neue Funktionalitäten (wie Funktionsprototypen und einen Präprozessor) in das Sprachkonzept integrierte. ANSI C räumt dabei unter anderem mit Unklarheiten in der ursprünglichen Definition auf, hierzu zählen die Ausführungsreihenfolge der vier Inkrement- und Dekrementoperatoren (++, −−). Mit der Norm wurden ferner die enthaltenen C-Bibliotheken festgelegt.
Im Jahr 1990 wurde die ANSI-C-Norm (mit kleinen Modifikationen) von der ISO als ISO/IEC 9899:1990 übernommen.
Bis heute ist ANSI C 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 ANSI C basierendes Programm sollte, zumindest theoretisch, 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.
Beispiel für den Unterschied zwischen K&R C und ANSI C
ANSI C:
void prt(char* str)
{
printf("%s\n", str);
}
int main(void)
{
prt("Hallo, Welt!");
return 0;
}
K&R-C:
prt(str)
char* str;
{
printf("%s\n", str);
}
int main()
{
prt("Hallo, Welt!");
return 0;
}
Siehe auch: C (Programmiersprache), C++