Standardní knihovna jazyka C
Author
Albert FloresStandardní knihovna jazyka C je v informatice implementace standardní knihovny podle standardu ANSI C. Je podmnožinou POSIX specifikace knihovny jazyka C, která byla vytvořena ve stejné době. Od chvíle, kdy bylo ANSI C přijato jako ISO standard, je také nazývána jako knihovna ISO C .
Standardní knihovna jazyka C poskytuje makra, definice datových typů a funkcí pro práci s textovými řetězci, matematické výpočty, práci se vstupy a výstupy, správu paměti a několik dalších služeb operačního systému. Zahrnuje hlavičkové soubory programovacího jazyka C.
Historie
Programovací jazyk C, na rozdíl od tehdy tradičních jazyků jako byl Cobol a Fortran, před svou standardizací neobsahoval vnořené funkce jako například vstupně/výstupní operace. Nedostatek postupem času napravovala uživatelská komunita, vytvářející myšlenku implementace chybějících funkcí a později i jejich stmelení do sady, která se nyní nazývá Standardní knihovna jazyka C. +more Mnoho z těchto myšlenek se zároveň stalo přímo součástí definice standardu programovacího jazyka C.
Unix a programovací jazyk C vznikaly v Bellových laboratořích firmy AT&T na konci šedesátých a počátku sedmdesátých let. Během sedmdesátých let nabral programovací jazyk C na popularitě a mnoho universit a vládních i nevládních organizací začalo používat ve svých projektech své vlastní variace jazyka, což na počátku osmdesátých let vyústilo ve zřejmé problémy vzájemné kompatibility rozdílných implementací. +more V roce 1983 sestavil institut ANSI komisi za účelem vytvoření specifikace standardu dnes známého jako ANSI C, která v roce 1989 vyvrcholila vznikem standardu C89. Součástí nově vzniklého standardu je i sada softwarových knihoven nazvaná ANSI C standard library (Standardní knihovna ANSI C).
Následující verze standardu jazyka C přinášely do vzniklé knihovny další požadované hlavičkové soubory, ale podpora těchto nových rozšíření se liší v závislosti na jednotlivých implementacích. Hlavičkové soubory , a byly přidány s prvním rozšířením normy (označovaným NA1) v roce 1995. +more Následující aktualizace byla provedena v roce 1999 v souvislosti s vydáním standardu C99 a přibyly hlavičkové soubory s názvy: , , , , a .
Standard ISO
Knihovna standardu ISO C se skládá z 24 hlavičkových souborů jazyka C, pomocí kterých je možné vytvořit program nezávislý na svém okolí. Každý hlavičkový soubor obsahuje jednu či více deklarací funkcí a definice typů a maker. +more Hlavičkové soubory standardu ISO C jsou uvedeny v tabulce níže.
V porovnání s jinými jazyky (například Java) je velikost standardní knihovny nepatrná. Knihovna poskytuje základní sadu matematických funkcí, funkce pro práci s řetězci a funkce pro souborový a konzolový vstup a výstup. +more Nezahrnuje ale standardní sadu pro práci s kontejnery, která je obsažena ve standardu knihovny C++, také se nezabývá specifikací grafického uživatelského rozhraní, síťových nástrojů a dalších, které jsou obsaženy například ve standardu programovacího jazyka JAVA. Hlavní výhodou plynoucí z kompaktnosti malé standardní knihovny je její jednoduchost a následná snadná přenositelnost na nové platformy.
V průběhu času bylo vydáno několik knihoven, které přidávají stejné funkce jako standardní knihovny jiných jazyků. Mezi nejznámější knihovny paří projekt GNOME, který vytvořil soubor grafických nástrojů GTK+ a GLib. +more Jejich nevýhoda samozřejmě spočívá v tom, že spolu jednotlivé nestandardní knihovny vzájemně nespolupracují a programátoři se většinou musí učit pracovat s novými sadami funkcí.
Standard ISO C hlaviček knihoven
assert. +moreh| | Obsahuje makra pro práci s chybami, která se používají při detekci a odlaďování chyb. |
---|---|
complex. h| | Soubor funkcí, určený pro práci s komplexními čísly (nově v C99). |
ctype. h| | Obsahuje funkce pro rozlišení velkých a malých písmen a jejich vzájemným převodem bez závislosti na použité znakové sadě (většinou se využívá sady ASCII, či jejích nástaveb, i když je možné i použití sady EBCDIC. |
errno. h| | Testování chybových kódů hlášených funkcemi knihoven. |
fenv. h| | Práce v prostředí s pohyblivou řádovou čárkou (nově v C99). |
float. h| | Obsahuje definici konstant určených pro práci s knihovnou pro výpočty s plovoucí desetinnou čárkou. Mezi tyto funkce patří například výpočet minimální vzdálenosti dvou čísel s plovoucí desetinnou čárkou (_EPSILON), výpočet maximální přesnosti s použitou desetinnou přesností (_DIG) a funkce pracující s rozsahem použitých číslic (_MIN, _MAX). |
inttypes. h| | Pro přesné převody mezi typy integer (nově v C99). |
iso646. h| | Pro programování pomocí znakové sady ISO 646 (nově v NA1). |
limits. h| | Obsahuje předdefinované konstanty a vlastnosti typů integer, jako je rozsah čísel, který se může zobrazit (_MIN, _MAX). |
locale. h| | Pro setlocale a konstanty s ní související. Tato funkce se používá pro výběr potřebné lokalizace. |
math. h| | Výpočty s běžnými matematickými funkcemi. |
setjmp. h| | Deklaruje makra setjmp a longjmp, která se používají pro práci s vnějšími proměnnými. |
signal. h| | Knihovna pro reakci při různých výjimečných situacích (výjimky, signály). |
stdarg. h| | Přístup k argumentům předaným funkcím. |
stdbool. h| | Datový typ boolean (nově v C99). |
stdint. h| | Definice dalších typů integer (nově v C99). |
stddef. h| | Několik užitečných datových typů a maker. |
stdio. h| | Podpora vstupů a výstupů jádra programovacího jazyka C. Tento soubor obsahuje „posvátnou“ funkci printf. |
stdlib. h| | Pro práci s rozličnými operacemi mezi které patří: generátor pseudonáhodných čísel, rozdělování paměti, kontrola procesů, vyhledávání a třídění. |
string. h| | Pro práci s různými druhy řetězců. |
tgmath. h| | Pro matematické funkce pro práci s obecnými datovými typy (nově v C99). |
time. h| | Pro konverzi mezi různými formáty data a času. |
wchar. h| | Pro práci s různými druhy znaků, je potřebná pro programy v jiných jazycích (nově v NA1). |
wctype. h| | Pro klasifikaci širokého spektra znaků (nově v NA1). |
Standardní knihovna jazyka C v jiných jazycích
Některé programovací jazyky zahrnují funkce standardní knihovny jazyka C ve svých vlastních knihovnách. Knihovny v jiných programovacích jazycích jsou většinou přizpůsobené, aby více vyhovovaly struktuře daného programovacího jazyka, ale funkce a sémantika je zachována. +more Programovací jazyk C++ například zahrnuje funkce standardu knihovny ANSI C, co se týče jména funkcí std (jako std::printf, std::atoi, std::feof, etc. ) a podobná jména hlavičkových souborů (cstdio, cmath, cstdlib atd. ). Dalšími jazyky s podobným přístupem k programování, jako má jazyk C jsou: programovací jazyk D a převládající implementace jazyka Python známá jako CPython.
Knihovny v kompilátoru
Některé kompilátory (například GCC) přikládají vlastní verze některých funkcí ze standardní knihovny jazyka C. To znamená, že funkce jsou zapsány přímo v kompilovaném objektovém souboru a program je volá namísto funkcí ve sdílené knihovně jazyka C. +more Vnořené funkce musí svým chováním respektovat standard ISO C.
Implementace
Unixové systémy mají většinou zabudovanou sdílenou knihovnu jazyka C, ale ne vždy jsou v instalaci obsaženy hlavičkové soubory, takže je znemožněna tvorba aplikací v jazyce C. Knihovna jazyka C je v unixových systémech považována za součást operačního systému. +more Funkce jazyka C, včetně těch ze standardu ISO C, jsou často používány programy i operačním systémem, tím pádem by systémy s unixovým jádrem při absenci knihovny jazyka C nefungovaly.
Na systémech Microsoft Windows jádro dynamických knihoven (DLL) neobsahuje standardní knihovnu jazyka C - ta je obsažena zvlášť v jednotlivých kompilátorech. Programy vytvořené v programovacím jazyce C jsou buď staticky propojené s knihovnou jazyka C nebo jsou propojené s dynamickou verzí knihovny distribuovanou přímo s programem.
Seznam dalších nejznámějších implementací:
* BSD libc - implementace pro operační systémy BSD * GNU C Library - nejběžnější implementace používaná unixovými systémy, jako je například Linux * dietlibc - alternativní implementace glibc zaměřená na malou velikost * uClibc - implementace pro Linuxové vestavěné systémy (bez MMU) * Dinkum C99 Library od Dinkumware - implementace od Dinkumware * Microsoft C Run-time Library - nejvíce komerčně licencovaná knihovna * Newlib - implementace pro vestavěné systémy (bez MMU) * klibc - implementace primárně určená pro použití v jádře Linuxu (kernel-libc) * EGLIBC - varianta glibc pro vestavěné systémy
Reference
Související články
C (programovací jazyk) * GNU C Library (glibc) * Preprocesor jazyka C (cpp) * Hlavičkový soubor * Knihovna (programování)