Standard C Library

Standard C Library

Die Standard C Library ist eine genormte Funktionsbibliothek für die Programmiersprache C, die etwa 200 häufig benötigte Funktionen für Ein- und Ausgabe, mathematische Operationen, Verarbeitung von Zeichenketten, Speicherverwaltung und andere Bereiche enthält. C verfügt, anders als traditionelle Sprachen (vor allem Pascal und Fortran), über keine eingebauten komplexen Funktionalitäten für z. B. Ein- und Ausgabeoperationen. Diese müssen daher von Funktionsbibliotheken zur Verfügung gestellt werden. In jeder standardkonformen betriebssystemgestützten Implementierung (hosted environment) der Programmiersprache C muss die Standard C Library in vollem Umfang vorhanden sein. Hingegen müssen freistehende Umgebungen (freestanding environment), wie man sie beispielsweise im Embedded-Bereich häufig antrifft, nur eine festgelegte Untermenge der Standardbibliothek anbieten, um standardkonform zu sein.

Inhaltsverzeichnis

Aufbau

Funktionsprototypen, Makros, Typdeklarationen und weitere Informationen sind in sogenannten Headern hinterlegt, die der Programmierer nach Bedarf mit Hilfe des C-Präprozessors in den Quelltext seines Programms einbindet, um dem Compiler mitzuteilen, wie diese Funktionen zu verwenden sind. Üblicherweise handelt es sich bei den Headern 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 der Header sind heute genormt, die Organisation der Bibliotheken variiert jedoch je nach Anbieter. Die Standard C Library wird meist vom Compilerhersteller implementiert, es gibt jedoch auch „nackte“ Compiler, wie etwa gcc, die die auf dem System vorhandene Bibliothek benutzen. Compiler und System-Standardbibliothek zusammen bilden hier das hosted environment.

Umfang

Im Vergleich zu den Bibliotheken anderer Sprachen, namentlich zum Beispiel Java, ist die Standard C Library minimalistisch. Sie stellt nur einen grundlegenden Satz an mathematischen Funktionen, Funktionen zur Zeichenkettenmanipulation, Typkonvertierung 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, noch bietet sie Unterstützung für grafische 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 die Portierung von C auf eine neue Plattform vergleichsweise einfach ist.

Der größte Teil der Standard C Library hat sich als sehr vorausschauend entwickelt herausgestellt. Dennoch gelten einige Teile heute als Fehler, wurden aber aufgrund verbreiteter Nutzung aufgenommen. Die Eingabefunktionen gets() und scanf() beispielsweise sind die Quelle vieler Pufferüberläufe, und die meisten Bücher über C raten von deren Verwendung dringend ab.

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

Entstehung

Da C, anders als andere traditionelle Sprachen wie Pascal oder Fortran, ü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 und Implementierungen für immer wieder genutzte Funktionen untereinander austauschten. Daraus entstanden im Laufe der Zeit umfangreiche Funktionsbibliotheken, die später mit als Grundlage für die Normung der Sprache C dienten.

C wurde in den frühen 1970er Jahren von Dennis Ritchie an den Bell Laboratories zur Programmierung des Betriebssystems UNIX 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 bald Kompatibilitätsprobleme gab. 1983 formierte das American National Standards Institute (ANSI) ein Komitee, das ein genormtes C definieren sollte. Im Dezember 1989 waren die Arbeiten am Sprachstandard ANSI X3.159-1989 Programming Language C („C89“) abgeschlossen, der auch die Standard C Library umfasste. Ein Jahr später wurde der Standard von der ISO als internationale Norm ISO/IEC 9899:1990 („C90“) übernommen. Es folgten weitere Revisionen, siehe auch: Varianten der Programmiersprache C.

Header

Von den jeweiligen Versionen der Norm werden folgende Header definiert:

C89/C90
assert.h Assertions
ctype.h Tests auf bestimmte Zeichentypen
errno.h Codes von Systemfehlern
float.h Angaben zu den Wertbereichen von Gleitkommazahlen
limits.h Angaben zu Beschränkungen des verwendeten Systems
locale.h Einstellungen des Gebietsschemas
math.h Mathematische Funktionen
setjmp.h erweiterte Sprungfunktionen
signal.h Signalbehandlung
stdarg.h Argumentbehandlung für variadische Funktionen
stddef.h zusätzliche Typdefinitionen
stdio.h Ein- und Ausgabe
stdlib.h vermischte Standardfunktionen, u.a. Speicherverwaltung
string.h Zeichenkettenoperationen
time.h Datum und Uhrzeit
Neu in C95
iso646.h Alternative Schreibweisen für logische und bitweise Operatoren
wchar.h Unterstützung für Unicode-Zeichen
wctype.h wie ctype.h, für Unicode-Zeichen
Neu in C99 [1]
complex.h Komplexe Zahlen
fenv.h Einstellungen für das Rechnen mit Gleitkommazahlen
inttypes.h Konvertierungs- und Formatierungsfunktionen für erweiterte Ganzzahltypen
stdbool.h Unterstützung für Boolesche Variablen
stdint.h plattformunabhängige Definition von Ganzzahltypen
tgmath.h typgenerische Makros für mathematische Funktionen

Freistehende Implementierungen

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

C89/C90 C95 C99
float.h float.h float.h
  iso646.h iso646.h
limits.h limits.h limits.h
stdarg.h stdarg.h stdarg.h
    stdbool.h
stddef.h stddef.h stddef.h
    stdint.h

Implementierungen der Standard C Library

  • Die Glibc ist eine freie (LGPL) Implementierung der Standard C Library, die im GNU-Projekt mit dem gcc-Compiler entwickelt wird. Sie ist daher besonders im Unix-Raum weit verbreitet.
  • Ebenfalls frei (unter einer BSD-Lizenz) verfügbar sind die C-Library-Implementationen der BSD Betriebssysteme FreeBSD, NetBSD und OpenBSD. Diese stellen moderne Weiterentwicklungen der ursprünglich von der CSRG bereitgestellten C Library dar.
  • Programme für Microsoft Windows nutzen häufig die von der Microsoft Visual C++-Laufzeitumgebung bereitgestellte Implementierung („msvcrt.dll“), 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 Embedded Systemen Verwendung finden, z. B. eglibc und die speziell für µClinux entwickelte uClibc oder diet libc.
  • Für die Programmierung von TI MSP430-Mikrocontrollern von Texas Instruments kann die msp430-libc verwendet werden.

Einzelnachweise

  1. Rationale for International Standard - Programming Languages - C. S. 15 (Abschnitt 5.1.1.2), abgerufen am 12. September 2010 (PDF, englisch).

Weblinks

Literatur

British Standards Institute (Hrsg.): The C Standard - Incorporating TC1 - BS ISO/IEC 9899:1999. John Wiley & Sons, 2003, ISBN 0-470-84573-2.


Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Standard Template Library — (STL) type of library for compiling C++ programs that enables the user to employ generic container classes and generic algorithms (Computers) …   English contemporary dictionary

  • Standard Template Library — C++ Standard Library fstream iomanip ios iostream sstream string …   Wikipedia

  • Standard Template Library — Pour les articles homonymes, voir STL. La Standard Template Library (STL) est une bibliothèque C++, normalisée par l ISO (document ISO/CEI 14882) et mise en œuvre à l aide des templates. Cette bibliothèque fournit : un ensemble de classes… …   Wikipédia en Français

  • Standard Template Library — Als Standard Template Library (STL) werden verschiedene in der Programmiersprache C++ geschriebene Bibliotheken bezeichnet. Ursprünglich wurde mit Standard Template Library eine in den 1980er Jahren bei Hewlett Packard (kurz: HP) entwickelte, in… …   Deutsch Wikipedia

  • Standard PHP Library — Die Standard PHP Library (SPL) ist eine Sammlung von Interfaces und Klassen zur Lösung häufiger Aufgaben in PHP. Die Library wurde mit der PHP Version 5 erstmals eingeführt und baut auf den Iterator Schnittstellen auf. Weblinks PHP Manual SPL… …   Deutsch Wikipedia

  • Standard Template Library — Стандартная библиотека шаблонов (STL) (англ. Standard Template Library) набор согласованных обобщенных алгоритмов, контейнеров, средств доступа к их содержимому и различных вспомогательных функций. Стандартная библиотека шаблонов до включения в… …   Википедия

  • JavaServer Pages Standard Tag Library — The JavaServer Pages Standard Tag Library (JSTL), is a component of the Java EE Web application development platform. It extends the JSP specification by adding a tag library of JSP tags for common tasks, such as XML data processing, conditional… …   Wikipedia

  • JavaServer Pages Standard Tag Library — La JavaServer Pages Standard Tag Library (JSTL), est un composant de la plate forme J2EE de développement. Elle étend la spécification JSP en ajoutant une librairie de tags pour les tâches courantes, comme le travail sur des fichiers XML, l… …   Wikipédia en Français

  • JavaServer Pages Standard Tag Library — Desarrollador Sun Microsystems http://java.sun.com/products/jsp/jstl/ Información general Última versión estable …   Wikipedia Español

  • JavaServer Pages Standard Tag Library — Die JavaServer Pages Standard Tag Library (Abk.: JSTL) ist eine Sammlung von vier Custom Tag Bibliotheken, die für die Erstellung von JSP Seiten hilfreich sind. Die JSTL wird im Rahmen des Java Community Process (JCP) unter JSR 052 verwaltet.… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”