1.2 Der ANSI C-Standard
 
C wurde 1972 von Dennis Ritchie und Ken Thompson erfunden, wobei »erfunden« nicht ganz der richtige Ausdruck ist. C wurde aufgrund einiger Einschränkungen der Vorgängersprache B implementiert und hauptsächlich für das Betriebssystem UNIX entwickelt. Denn vorher war UNIX vollständig in Assembler programmiert.
Als die ersten frei erhältlichen Compiler für C erschienen, war der Siegeszug nicht mehr aufzuhalten. C wurde im Zusammenhang mit UNIX zur erfolgreichsten Sprache überhaupt.
C wurde aber nicht entwickelt, um Software zu schreiben, sondern für Programmierer, die Compiler entwickelten. Und genau da lag das Problem. Jeder Compiler-Hersteller kochte sein eigenes Süppchen und erweiterte die Programmiersprache um einige Funktionen oder ließ die eine oder andere bestehende wegfallen.
Mit der Zeit entstanden immer mehr unterschiedliche C-Dialekte, und eine Portierung von einem zum anderen System kam dem Neuschreiben eines Programms gleich.
Schließlich hatte sich eine Gruppe von Compiler-, Hardware- und Software-Entwicklern zusammengefunden, mit der Absicht, das Problem der Vielfalt der Sprachendialekte zu beheben. »American National Standard Institute« (kurz ANSI) rief 1983 ein Komitee namens X3J11 ins Leben mit der Aufgabe, die Sprache C zu standardisieren.
Hinweis ANSI beherbergt natürlich nicht nur den C-Standard, sondern ist auch verantwortlich für unzählige weitere Standards weltweit (siehe http://www.ansi.org/).
|
Es wurde ein Entwurf für einen gemeinsamen Standard und dessen Einhaltung entwickelt. 1989 war es dann endlich soweit: Der Entwurf wurde vorgelegt und auch von der »International Standards Organization« (ISO) übernommen. In der Kurzform hieß er C89-Standard (ANSI Standard X3.159–1989). Teil des ANSI C Standards sind die Software Bibliotheken (besser bekannt unter dem Begriff ANSI C standard library).
Bei einer späteren Revision des C Standards wurden neue Headerdateien zur Bibliothek hinzugefügt. 1995 kamen bspw. die Headerdateien <iso646.h>, <wchar.h> und <wctype.h> hinzu, welche als Normative Amendment 1 bezeichnet wurden (kurz NA1).
Vier Jahre später, 1999, kamen dann die Headerdateien <complex.h>, <fenv.h>, <inttypes.h>, <stdbool.h>, <stdint.h> und <tgmath.h> hinzu. Diese Revision wurde dann als C99-Standard bekannt.
Natürlich wurden nicht immer nur Headerdateien hinzugefügt, sondern auch die wesentlichen Schwächen von C verbessert. Dies muss an dieser Stelle erwähnt werden, da häufig auf Titeln von Büchern zu lesen ist: »Entspricht dem neuen C99-Standard«. Häufig bezieht sich diese Aussage auf die wesentlichen Verbesserungen von C und nicht auf die neuen Bibliotheken.
Mittlerweile ist der C99-Standard (ISO/IEC 9899:1999) aktuell, der 1999 festgelegt wurde. Wobei ich hier anmerken muss, dass der echte ANSI C99-Standard bei noch keinem Compiler vollständig implementiert ist. Die meisten Compiler basieren noch auf der im Jahre 1995 aktualisierten ISO/IEC-Norm 9899:1995. In diesem Buch werden einige neue Datentypen, Funktionen und Makros, die mit dem ANSI C99-Standard eingeführt wurden, in einem eigenen Kapitel kurz erwähnt.
Sofern Sie den Standard lesen wollen, müssen Sie diesen käuflich erwerben, da es keine Online-Version davon gibt. Der ISO-Standard wird in Genf unter folgender Adresse vertrieben:
ISO Distribution
Case Postale 56
CH-1211 Geneve 20
Suisse
Sie können Sie allerdings auch eine »Rationale« via FTP von ftp.uu.net beziehen. Im Verzeichnis doc/standards/ansi/X3.159–1989 finden Sie eine entsprechende Postscript-Datei, welche auch von Silicon Press (ISBN 0–929306–07–4) vertrieben wird.
Hinweis Eine »Rationale« ist eine Erklärung, warum der Standard eine Entscheidung so und nicht anders getroffen hat. Allerdings ist diese »Rationale« nicht Bestandteil des ANSI Standard, weshalb diese auch nicht im oben genannten ISO-Standard vorhanden ist. Die »Rationale« dient lediglich zur Information.
|
1.2.1 Der Vorteil des ANSI C-Standards
 
Der Hauptvorteil des ANSI C-Standards ist die Portabilität von C-Programmen. Das bedeutet, wenn Sie ein Programm auf Plattform A geschrieben haben und übersetzen, lässt sich dieses Programm auch auf Plattform B übersetzen. Natürlich ist damit eine Neuübersetzung des Quellcodes gemeint und nicht das ausführbare Programm. ANSI C-Compiler gibt es für über 40 Systeme, vom kleinsten 8-Bit-Computer bis hin zum Superrechner.
Nicht portabel hingegen sind hardwarenahe bzw. betriebssystemspezifische Operationen. Wenn Sie zum Beispiel ein Programm für UNIX/Linux schreiben, das die Grafikkarte anspricht, wird das Programm seine Ausführung auf anderen Systemen verweigern.
Es gibt natürlich noch eine Reihe von weiteren Standards, die aber in diesem Buch nicht behandelt werden.
|