| Infos Home | Impressum | Original Artikel & Autoren Liste |
Bevor C genormt wurde, bot die Sprache, anders als traditionelle Sprachen (vor allem Pascal und Fortran), keine eingebauten Funktionalitäten, wie z.B. für E/A-Operationen. Im Laufe der Zeit bildeten sich Zirkel von C-Programmierern, die ihre Ideen und Implementierungen für immer wieder genutzte Funktionen austauschten. Daraus bildeten sich ausgewachsene Funktionsbibliotheken, die später als Grundlage für die Normung der Sprache C dienten.
Der Name und die Parameter jeder Funktion stehen in einem Header, den der Programmierer in den Quelltext seines Programms einbindet, um Zugriff auf die Funktionen der Standard C Library zu haben. Die tatsächliche Implementierung der Funktionen ist in eine Programmbibliothek ausgelagert (z.B. libc.so.6 unter Linux, msvcrt.dll unter Windows). Namensgebung und Gültigkeitsbereich der Header sind heute genormt, die Organisation der Bibliotheken variiert jedoch je nach Anbieter. Die Standard C Library wird meist zusammen mit einem Compiler vertrieben. Die glibc wird zum Beispiel üblicherweise zusammen mit dem GCC-Compiler ausgeliefert und verwendet. Da C-Compiler oft Funktionalität bieten, die über reines ANSI C hinausgeht, sind die mit einem Compiler ausgelieferten Bibliotheken meist inkompatibel zu den Standard Librarys anderer Compiler.
Im Vergleich zu den Bibliotheken anderer Sprachen (namentlich Java) ist die Standard C Library minimalistisch. Die Bibliothek stellt einen grundlegenden Satz an mathematischen Funktionen, Funktionen zur Zeichenkettenmanipulation, Typ-Konvertierung sowie Datei- und konsolenbasierter Ein- und Ausgabe zur Verfügung. Sie stellt keine genormten Container-Datentypen zur Verfügung, wie es die C++-Standardbibliothek tut, geschweige denn komplette GUI-Toolkits, Netz-Werkzeuge und andere Funktionalität, wie sie Java standardmäßig bietet. Hauptvorteil der kleinen Standard-Bibliothek ist die Tatsache, dass die Bereitstellung einer funktionierenden ANSI C-Umgebung weit einfacher ist als sie es für andere Sprachen ist, und daher die Portierung von C auf eine neue Plattform relativ einfach ist.
Der größte Teil der Standard C Library hat sich als sehr vorausschauend entwickelt herausgestellt. Einige Teile gelten heute als Fehler. Die String-Eingabefunktionen gets() und scanf() sind die Quelle vieler Pufferüberläufe, und die meisten Bücher über C raten von deren Verwendung ab. Ungelöst blieb auch das Problem von String-Konstanten: Über den Aufruf einer Funktion wie strchr() kann man das Recht erwerben, einen String zu ändern, der als nicht änderbar (const) deklariert wurde. Eine weitere "Merkwürdigkeit" ist strtok(), eine Funktion die als primitives Werkzeug zur lexikalischen Analyse gedacht ist, jedoch hochgradig "fragil" und schwer zu benutzen ist.
| Inhalt |
|
1 Geschichte 2 Header 3 |
Geschichte
Sowohl Unix als auch C wurden in den späten 1960er und frühen 1970er Jahren an den Bell Labs entwickelt. Während der 1970er wurde C zunehmend populärer. Viele Universitäten und Organisationen erfanden ihre eigenen Varianten der Sprache für ihre eigenen Projekte. Zwischen den verschiedenen C-Implementierungen gab es schon bald Kompatibilitätsprobleme. 1983 formierte das American National Standards Institute (ANSI) ein Komitee, das ein genormtes C definieren sollte, das heute als ANSI C bekannt ist. Ein Teil der Norm war ein Satz von Programmbibliotheken mit dem Namen ANSI C Standard Library.
Die ANSI C Standardbibliothek besteht aus 18 Header-Dateien, die vom Programmierer durch eine einzige Anweisung eingebunden werden können. Jede Header-Datei enthält eine oder mehrere Funktionen, Prototypen, Datentypdefinitionen und Makros.
Spätere Revisionen der C-Norm haben einige neue Definitionen zur Bibliothek hinzugefügt, namentlich die Datei
Header
: Eine detaillierte Beschreibung der Header-Dateien (auf Englisch)
|
Der Ursprungsartikel stammt von der deutschsprachigen Wiki pedia (siehe oben: "Original Artikel & Autoren Liste"). Der Text steht unter der GNU Freie Dokumentation Lizenz. |