Movatterモバイル変換


[0]ホーム

URL:


Zum Inhalt springen
WikipediaDie freie Enzyklopädie
Suche

C-Standard-Bibliothek

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet vonStandard C Library)

DieC-Standard-Bibliothek (englischC standard library, auch bekannt alslibc) ist dieStandardbibliothek derProgrammierspracheC.

In jeder standardkonformen betriebssystemgestützten Implementierung(hosted environment) von C muss die C-Standard-Bibliothek in vollem Umfang vorhanden sein. Hingegen müssen freistehende Umgebungen(freestanding environment), wie man sie beispielsweise imEmbedded-Bereich häufig antrifft, nur eine festgelegte Untermenge der Standardbibliothek anbieten, um standardkonform zu sein.

Aufbau

[Bearbeiten |Quelltext bearbeiten]

Funktionsprototypen,Makros,Typdeklarationen und weitere Informationen sind in sogenanntenHeader-Dateien hinterlegt, die der Programmierer nach Bedarf mit Hilfe desC-Präprozessors in denQuelltext seines Programms einbindet, um demCompiler mitzuteilen, wie diese Funktionen zu verwenden sind. Üblicherweise handelt es sich bei den Header-Dateien um separate Dateien, allerdings verlangt dies der C-Standard nicht explizit: der Compilerhersteller muss lediglich dafür sorgen, dass sich seine C-Umgebung so verhältals ob. Die tatsächliche Implementierung der Funktionen ist meist in eineProgrammbibliothek ausgelagert. Namensgebung und Gültigkeitsbereich einer Header-Datei sind heute genormt, die Organisation der Bibliotheken variiert jedoch je nach Anbieter. Die C-Standard-Bibliothek wird meist vom Compilerhersteller implementiert, es gibt jedoch auch „nackte“ Compiler, wie etwagcc, die die auf dem System vorhandene Bibliothek benutzen. Compiler und System-Standardbibliothek zusammen bilden hier dashosted environment.

Umfang

[Bearbeiten |Quelltext bearbeiten]

Die C-Standard-Bibliothek enthält etwa 200 häufig benötigteFunktionen fürEin- und Ausgabe,mathematische Operationen, Verarbeitung vonZeichenketten,Speicherverwaltung und andere Bereiche. C verfügt, anders als traditionelle Sprachen (vor allemPascal undFortran), über keine eingebauten komplexen Funktionalitäten für z. B. Ein- und Ausgabeoperationen. Diese müssen daher vonFunktionsbibliotheken zur Verfügung gestellt werden.

Im Vergleich zu den Bibliotheken anderer Sprachen, namentlich zum BeispielJava, ist die C-Standard-Bibliothek minimalistisch. Sie stellt nur einen grundlegenden Satz an mathematischen Funktionen, Funktionen zurZeichenkettenmanipulation, Typkonvertierung sowie datei- und konsolenbasierter Ein- und Ausgabe zur Verfügung. Sie stellt weder genormteContainer-Datentypen zur Verfügung, wie es dieC++-Standardbibliothek tut, noch bietet sie Unterstützung fürgrafische Benutzeroberflächen,Netzwerkfunktionalitäten und anderes, was in anderen Sprachen heute selbstverständlich vorhanden ist. Ein großer Vorteil der kleinen Standard-Bibliothek besteht jedoch darin, dass die Bereitstellung einer standardkonformen C-Implementation weit einfacher ist als bei anderen Sprachen und so diePortierung von C auf eine neuePlattform vergleichsweise einfach ist.

Der größte Teil der C-Standard-Bibliothek hat sich als sehr vorausschauend entwickelt herausgestellt. Dennoch gelten einige Teile heute als Fehler, wurden aber aufgrund verbreiteter Nutzung aufgenommen. Die Eingabefunktiongets() beispielsweise ist die Quelle vielerPufferüberläufe und wurde deswegen auch aus der Bibliothek des neuesten C-Standards C11 entfernt.

Die ISO-C-Standardbibliothek umfasst aktuell (ISO-C99) 24 Header-Dateien. Da einige Header-Dateien erst in neueren Revisionen dem C-Standard hinzugefügt wurden, werden sie von Compilern, die einen älterenSprachstandard implementieren, nicht unterstützt.

Entstehung

[Bearbeiten |Quelltext bearbeiten]

Da C, anders als andere traditionelle Sprachen wiePascal oderFortran, über keine eingebauten komplexen Funktionalitäten z. B. für Ein- und Ausgabeoperationen verfügt, bildeten sich in der Phase vor der Standardisierung Zirkel von C-Programmierern, die ihre Ideen undImplementierungen für immer wieder genutzte Funktionen untereinander austauschten. Daraus entstanden im Laufe der Zeit umfangreicheFunktionsbibliotheken, die später mit als Grundlage für die Normung der Sprache C dienten.

C wurde in den frühen 1970er Jahren vonDennis Ritchie an denBell Laboratories zur Programmierung des BetriebssystemsUnix entwickelt und gewann in den folgenden Jahren zunehmend an Popularität. Viele Universitäten und Organisationen entwickelten für ihre Projekte eigene Varianten der Sprache, so dass es zwischen den verschiedenen Implementierungen schon baldKompatibilitätsprobleme gab. 1983 formierte dasAmerican National Standards Institute (ANSI) ein Komitee, das ein genormtes C definieren sollte. Im Dezember 1989 waren die Arbeiten am SprachstandardANSI X3.159-1989 Programming Language C („C89“) abgeschlossen, der auch die C-Standard-Bibliothek umfasste. Ein Jahr später wurde der Standard von derISO als internationale NormISO/IEC 9899:1990 („C90“) übernommen. Es folgten weitere Revisionen, siehe auch:Varianten der Programmiersprache C.

Header-Dateien

[Bearbeiten |Quelltext bearbeiten]

Von den jeweiligen Versionen der Norm werden folgende Header-Dateien definiert:

C89/C90
assert.hAssertions
ctype.hTests auf bestimmte Zeichentypen
errno.hCodes von Systemfehlern
float.hAngaben zu den Wertbereichen vonGleitkommazahlen
limits.hAngaben zu Beschränkungen des verwendeten Systems
locale.hEinstellungen desGebietsschemas
math.hmathematische Funktionen
setjmp.herweiterteSprungfunktionen
signal.hSignalbehandlung
stdarg.hArgumentbehandlung fürvariadische Funktionen
stddef.hzusätzliche Typdefinitionen
stdio.hEin- und Ausgabe
stdlib.hvermischte Standardfunktionen, u. a. Speicherverwaltung
string.hZeichenkettenoperationen
time.hDatum und Uhrzeit
Neu in C95 (auch: „NA1“)
iso646.halternative Schreibweisen fürlogische undbitweise Operatoren
wchar.hUnterstützung fürUnicode-Zeichen
wctype.hwiectype.h, für Unicode-Zeichen
Neu in C99[1]
complex.hKomplexe Zahlen
fenv.hEinstellungen für das Rechnen mit Gleitkommazahlen
inttypes.hKonvertierungs- und Formatierungsfunktionen für erweiterteGanzzahltypen
stdbool.hUnterstützung fürBoolesche Variablen
stdint.hplattformunabhängige Definition von Ganzzahltypen
tgmath.htypgenerische Makros für mathematische Funktionen
Neu in C11
stdalign.hMakros für dieSpeicherausrichtung von Objekten
stdatomic.hTypen und Makros füratomare Operationen zwischen Threads
stdnoreturn.hDefinition des No-Return-Makros
threads.hUnterstützung fürThreads,Mutexes undMonitore
uchar.hUnterstützung fürUTF-16- undUTF-32-kodierte Unicode-Zeichen

Freistehende Implementierungen

[Bearbeiten |Quelltext bearbeiten]

Freistehende Implementierungen müssen nur mindestens die folgenden Header-Dateien zur Verfügung stellen:

HeaderC89/C90C95C99
float.hJaJaJa
iso646.h JaJa
limits.hJaJaJa
stdarg.hJaJaJa
stdbool.h  Ja
stddef.hJaJaJa
stdint.h  Ja

Implementierungen der C-Standard-Bibliothek

[Bearbeiten |Quelltext bearbeiten]

Literatur

[Bearbeiten |Quelltext bearbeiten]

Weblinks

[Bearbeiten |Quelltext bearbeiten]

Einzelnachweise

[Bearbeiten |Quelltext bearbeiten]
  1. Rationale for International Standard – Programming Languages – C. (PDF; 877 kB) Abgerufen am 12. September 2010 (englisch). 
Abgerufen von „https://de.wikipedia.org/w/index.php?title=C-Standard-Bibliothek&oldid=261912173
Kategorie:

[8]ページ先頭

©2009-2026 Movatter.jp