Standardní knihovna jazyka C

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Standardní 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

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top