„C-Standard-Bibliothek“ – Versionsunterschied

[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Synonym
 
(4 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1:
Die '''C-Standard-Bibliothek''' ({{enS|C standard library}}, auch bekannt als ''libc'') ist die [[Standardbibliothek]] der [[Programmiersprache]] [[C (Programmiersprache)|C]].
 
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 im [[Eingebettetes System|Embedded]]-Bereich häufig antrifft, nur eine festgelegte Untermenge der Standardbibliothek anbieten, um standardkonform zu sein.
 
== Aufbau ==
[[Funktionsprototyp]]en, [[Makro]]s, [[Datentyp|Typdeklarationen]] und weitere Informationen sind in sogenannten [[Header-Datei|Header-Dateien]]en hinterlegt, die der Programmierer nach Bedarf mit Hilfe des [[C-Präprozessor]]s in den [[Quelltext]] seines Programms einbindet, um dem [[Compiler]] 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ält ''als ob''. Die tatsächliche Implementierung der Funktionen ist meist in eine [[Programmbibliothek]] 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 etwa [[GNU Compiler Collection|gcc]], die die auf dem System vorhandene Bibliothek benutzen. Compiler und System-Standardbibliothek zusammen bilden hier das ''hosted environment''.
 
== Umfang ==
Zeile 10:
Die C-Standard-Bibliothek enthält etwa 200 häufig benötigte [[Funktion (Programmierung)|Funktionen]] für [[Eingabe und Ausgabe|Ein- und Ausgabe]], [[Funktion (Mathematik)|mathematische Operationen]], Verarbeitung von [[Zeichenkette]]n, [[Speicherverwaltung]] und andere Bereiche. C verfügt, anders als traditionelle Sprachen (vor allem [[Pascal (Programmiersprache)|Pascal]] und [[Fortran]]), über keine eingebauten komplexen Funktionalitäten für z. B. Ein- und Ausgabeoperationen. Diese müssen daher von [[Programmbibliothek|Funktionsbibliotheken]] zur Verfügung gestellt werden.
 
Im Vergleich zu den Bibliotheken anderer Sprachen, namentlich zum Beispiel [[Java (Programmiersprache)|Java]], ist die C-Standard-Bibliothek minimalistisch. Sie stellt nur einen grundlegenden Satz an mathematischen Funktionen, Funktionen zur [[Zeichenkette]]nmanipulation, Typkonvertierung sowie datei- und konsolenbasierter Ein- und Ausgabe zur Verfügung. Sie stellt keineweder genormtengenormte [[Container (Informatik)|Container-Datentypen]] zur Verfügung, wie es die [[C++-Standardbibliothek]] tut, noch bietet sie Unterstützung für [[grafische Benutzeroberfläche]]n, [[Rechnernetz|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 die [[MigrationPortierung (InformationstechnikSoftware)#Software-Migration|Portierung]] von C auf eine neue [[Plattform (Computer)|Plattform]] 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 Eingabefunktion <code>gets()</code> beispielsweise ist die Quelle vieler [[Pufferüberlauf|Pufferüberläufe]] und wurde deswegen auch aus der Bibliothek des neuesten C-Standards C11 entfernt.
Zeile 66:
| <code>wctype.h</code> || wie <code>ctype.h</code>, für Unicode-Zeichen
|- class="hintergrundfarbe5"
!colspan="2" style="text-align:left"| Neu in C99<ref>{{Internetquelle | url=httphttps://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf | titel=Rationale for International Standard – Programming Languages – C | format=PDF; 877&nbsp;kB | zugriff=2010-09-12| sprache=en}}</ref>
|-
| <code>complex.h</code> || [[Komplexe Zahl]]en
Zeile 118:
* Die [[GNU-C-Bibliothek|glibc]] ist eine freie ([[GNU Lesser General Public License|LGPL]]) Implementierung der C-Standard-Bibliothek, die im [[GNU-Projekt]] mit dem [[GNU Compiler Collection|gcc]]-Compiler entwickelt wird. Sie ist daher besonders im [[Unix]]-Raum weit verbreitet.
* Ebenfalls frei (unter einer [[BSD-Lizenz]]) verfügbar sind die C-Bibliothek-Implementationen der [[Berkeley Software Distribution|BSD]]-Betriebssysteme [[FreeBSD]], [[NetBSD]] und [[OpenBSD]]. Diese stellen moderne Weiterentwicklungen der ursprünglich von der [[Computer Systems Research Group|CSRG]] bereitgestellten C-Bibliothek dar.
* Programme für [[Microsoft Windows|Windows]] nutzen häufig die von der „[[Microsoft Visual C++]]“-[[Laufzeitumgebung]] bereitgestellte Implementierung (<ttspan style="font-family:monospace;">msvcrt.dll</ttspan>), die keinen besonderen Namen trägt, da sie nicht separat verfügbar ist.
* Als Alternativen stehen unter anderem auch weniger umfangreiche Implementierungen zur Verfügung, die besonders auf [[Eingebettetes System|eingebetteten Systemen]] Verwendung finden, z.&nbsp;B. [[Glibc#EGLIBC Fork|eglibc]] und die speziell für [[µClinux]] entwickelte [[uClibc]] oder [[diet libc]].
* Die [[Klibc]] ist eine freie ([[GNU General Public License|GPL]] oder [[BSD-Lizenz]]) Minimalimplementierung der C-Standard-Bibliothek von [[Hans Peter Anvin]], die hauptsächlich während des [[Booten|Startvorgangs]] vom [[Linux (Kernel)|Linux-Kernel]] genutzt wird.
* Für die Programmierung von „[[TI MSP430]]“-Mikrocontrollern von Texas Instruments kann die [[msp430-libc]] verwendet werden.
* [[Bionic (Software)|Bionic]] ist eine freie ([[BSD-Lizenz]]) Implementierung von [[Google LLC|Google]] für das [[Betriebssystem]] [[Android (Betriebssystem)|Android]].
* [[Newlib]] ist eine zur Erstellung von Projekten im Bereich [[Eingebettete Systeme]] optimierte Implementierung der C-Standard-Bibliothek.
* [[musl]] ist eine für [[Linker (Computerprogramm)#Statisches Linken|statisches Linken]] optimierte Implementierung der C-Standard-Bibliothek.
Zeile 136:
 
== Weblinks ==
* {{Internetquelle | url=httphttps://wwwwww2.fhhs-fulda.de/~klingebiel/c-stdlib/index.htm | titel=Übersicht über die C Standard-Bibliothek | zugriff=2010-09-21| kommentar=C89}}
* {{Internetquelle | url=httphttps://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf | titel=ISO/IEC 9899:1999 (C99) mit TC1, TC2 und TC3 | format=PDF; 3,6&nbsp;MB | zugriff=2010-09-12| sprache=en | kommentar=nicht-normatives Arbeitsdokument}}
* {{Internetquelle | url=httphttps://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf | titel=Rationale für C99, Revision 5.10 | format=PDF; 877&nbsp;kB | zugriff=2010-09-12| sprache=en}}
* {{Internetquelle | url=https://code-reference.com/c | titel=C Library | zugriff=2012-11-26| sprache=en}}