Advanced Java
Services
|
c99
|
|
Die erste Standardisierung von C nach dem genialen Entwurf von Kernighan und Ritchie war ANSI-C.
Das American National Standards Institute veröffentlichte 1989 diesen Standard, der deshalb auch C89 genannt wurde.
1995 wurden am ANSI-C Standard kleinere Korrekturen vorgenommen. Die nächste wesentliche Erweiterung wurde 1999
veröffentlicht und wird kurz als C99-Standard bezeichnet. Der C99-Standard erfuhr in den folgenden Jahren mehrmals
kleinere Koreekturen. Bis heute gibt es nur wenige Compiler, die alle C99 Neuerungen implementiert haben.
2007 begannen die Arbeiten zu einem neueren Standard der den Namen C11 bekam. Er enthält zahlreiche Neuerungen, die
aber erst in den kommenden Jahren nach und nach in die C-Compiler implementiert werden.
Weitere Informationen findet man unter
en.wikipedia.org/wiki/C_(programming_language)
en.wikipedia.org/wiki/ANSI_C
Es folgt eine kleine Übersicht über wichtige C99 Neuerungen. Eine ausführlichere Liste findet man etwa unter
en.wikipedia.org/wiki/C99
- Einzeilige Kommentare wie in C++.
(GCC/MinGW erlaubt diese Kommentare bereits C90-Standard, der als Default eingestellt ist.)
- Vereinbarungen können nach Anweisungen stehen wie in C++.
(GCC/MinGW erlaubt dies bereits im C90-Standard, der als Default eingestellt ist.)
- for Schleife wie in C++.
(GCC/MinGW: Flag -std=c99 erforderlich)
- _Bool (neuer Datentyp)
(GCC/MinGW erlaubt diesen bereits im C90-Standard, der als Default eingestellt ist.)
- long long und unsigned long long (neue Datentypen)
(GCC/MinGW: Flag -std=c99 erforderlich)
- long double (neuer Datentyp)
(GCC/MinGW: Flag -std=c99 erforderlich, Einlesen nur mit fgets und strtold möglich)
- Header complex.h ermöglicht Rechnen mit komplexen Zahlen. Dazu wird der Datentyp _Complex eingeführt,
der u.a. mit den Datentypen float, double und long double kombiniert werden kann.
(GCC/MinGW: Für float und double reicht ein include des Headers, für long double muß -std=c99 explizit
gesetzt werden)
- Arrays mit variabler Länge
(GCC/MinGW erlaubt dieses Feature bereits im C90-Standard, der als Default eingestellt ist.)
- inline Funktionen ägnlich wie in C++