Standardní knihovna jazyka C: Porovnání verzí

Smazaný obsah Přidaný obsah
dokončení překladu
m typo
Řádek 30:
|}
 
'''Standardní knihovna jazyka C''' je v [[Informatika (počítačová věda)|informatice]] sada standardů pro [[Knihovna (programování)|knihovny]] a [[Hlavičkový soubor|hlavičkové soubory]] [[C (programovací jazyk)|programovacího jazyka C]] dle normy [[C (programovací jazyk)#ANSI C a ISO C|ISO C]]. Obsahuje funkce jazyka C zajištující [[Vstup/výstup|vstup a výstup]], práci s [[Textový řetězec|textovými řetězci]] a podobně. Standardní knihovna jazyka C je standardizovánéstandardizované rozhraní jazyka C popsané tímto dokumentem, nejedná se však o programovou knihovnu, jež by byla propojitelná s programy napsanými v jazyce C, knihovna s tímto názvem neexistuje.
 
 
Termín '''[[knihovna run-time]] jazyka C''' se na některých platformách používá pro označení sady základních knihoven, které mají za úkol dynamické propojení s operačním systémem (za i bez podpory hlavičkových souborů). Tohoto označení se také užívá pro knihovny distribuované s kompilátorem jazyka C. Označení '''run-time''' se používá pro balíček knihoven a hlavičkových souborů, které jsou potřeba pro úspěšnou činnost kompilátoru. Run-ctimetime neposkytuje pouze funkce standardní knihovny jazyka C, ale i další součásti potřebné pro fungující program napsaný v jazyce C. Mezi tyto další součástí patří inicializace volání funkce <code>main</code>, či podprogramy nahrazující aritmetické funkce, jěžjež nejsou obsaženy v CPU a jsou potřebné pro kód generovaný kompilátorem jazyka C.
 
== Historie ==
Řádek 42:
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 '''<iso646.h>''', '''<wchar.h>''' a '''<wctype.h>''' byly přidány s prvním rozšířením normy (označováným NA1) v roce 1995.
 
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: '''<complex.h>''', '''<fenv.h>''', '''<inttypes.h>''', '''<stdbool.h>''', '''<stdint.h>''' a '''<tgmath.h>'''.
 
== 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 sémsvém okolí. Každý hlavičkový soubor obsahuje jednu, či více deklarací funkcí a definice typů a maker. Hlavičkové soubory standardu ISO C jsou uvedeny v tabulce níže.
 
V porovnání s jinými jazyky (například [[Java (programovací jazyk)|Java]]) je velikost standardní knihovny nepatrná. Knihovna poskytuje zákadnízákladní sadu matematických funkcí, funkce pro práci s řetězci a funkce pro souborový a konzolový vstup a výstup. Nezahrnuje ale standardní sadu pro práci s kontejnery, která je obsažena ve standardu knihovny [[C++]], také se nezabývá specifikací [[GUI|grafického uživatelského rozhraní]], síťových nástrojů a dalších, které jsou obsaženy například ve standadu programovacího jazyku JAVA. Hlavní výhodou plynoucí z kompaktostikompaktnosti 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ějsí knihovny paří projekt [[GNOME]], který vytvořil soubor grafických nástrojů [[GTK+]] a [[GLib]]. 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ýinovými sadami instrukcí.
 
=== Standard ISO C hlaviček knihoven ===
Řádek 59:
|''' [[assert.h|<assert.h>]]''' || Obsahuje makra pro práci s chybami, která se používají při detekci a odlaďování chyb.
|-
|''' [[complex.h|<complex.h>]]''' || SoubrSoubor fukcífunkcí, určený pro práci s [[komplexní čísla|komplexními čísly]]. (Nově s '''C99''')
|-
|''' [[ctype.h|<ctype.h>]]''' || Obsahuje funkce pro rozzlišení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|<errno.h>]]''' || Testování chybových kódů hlášených funkcemi knihoven.
Řádek 67:
|''' [[fenv.h|<fenv.h>]]''' || Práce v prostředí s [[Plovoucí desetinná čárka|plovoucí desetinnou čárkou]]. (Nově s '''C99''')
|-
|''' [[float.h|<float.h>]]''' || Obsahuje definici konstant určených pro práci s knihovnou pro výpočty s plovoucí desetinoudesetinnou čárkou. ObsahujeMezi tyto funkce propatří například výpočet minimálníhominimální vzdálenosti dvou čísel s plovoucí desetinnou čárkou (_EPSILON), výpočet maximální přsnostipřesnosti s použitou desetinnou přesností (_DIG) a funkce pracující s rozsahem použitých číslic (_MIN, _MAX).
|-
|''' [[inttypes.h|<inttypes.h>]]''' || Pro přesné převody mezi typy integer. (Nově s '''C99''')
Řádek 73:
|''' [[iso646.h|<iso646.h>]]''' || Pro programování pomocí znakové sady [[ISO 646]]. (Nově s '''NA1''')
|-
|''' [[limits.h|<limits.h>]]''' || ObsahuheObsahuje předdefinované konstanty a vlastnosti typů integer, jako je rozsah čísel, který se může zobrazit (_MIN, _MAX).
|-
|''' [[locale.h|<locale.h>]]''' || Pro setlocale() a konstanty s ní související. Tato funkce se používá pro výběr potřebné lokalizace.
Řádek 79:
|''' [[math.h|<math.h>]]''' || Výpočty s běžnými matematickými funkcemi.
|-
|''' [[setjmp.h|<setjmp.h>]]''' || Deklaruje makra setjmp a longjmp, která se používají pro práci s vnějšími proměnnými
|-
|''' [[signal.h|<signal.h>]]''' || Knihovna pro reakce při náročných situacích
Řádek 107:
 
== 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 smentikasémantika je zachována. Programovací jazyk [[C++]] například zahrnuje funkce standardu knihovny ANSI C, co se týče jména funkcí '''std''' (jako <code>std::printf</code>, <code>std::atoi</code>, <code>std::feof</code>, etc.) a podobná jména hlavičkových souborů ("<code>cstdio</code>", "<code>cmath</code>", "<code>cstdlib</code>", atd.). Dalšími jazyky s podobným přístupem k programování, jako má jazyk C jsou: [[D (programovací jazyk)|programovací jazyk D]] a převládající implementace jazyka [[Python (programovací jazyk)|Python]] známá jako [[CPython]].
 
== Funkce kompilátoru ==
Řádek 115:
== 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. 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 druhé straně na systémech od společnosti Microsoft Windows jádro dynamických knihoven ([[DLL]]) neobsahuje standardní knihovnu jazyka C a 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 propojené s dynamickou verzí knihovny distribuovanou přímo s programem.
 
Seznam dalsích nejznámějších implementací:
 
* [[BSD libc]] – implementace pro operační systémy [[Berkeley Software Distribution|BSD]]
* [[GNU C Library]] – nejběžnější implementace používaná [[UN*XUNIX|unixovými]] systémy, jako je například [[Linux]]
* [[dietlibc]] – alternativní implementace glibc zaměřená na malou velikost
* [[uClibc]] – implementace pro Linuxové [[Embedded systém|vestavěné systémy]] (bez MMU)
* Dinkum C99 Library od [[Dinkumware]] – nejvíce komerčně licencovaná knihovna
* [[Microsoft C Run-time Library]] – implementace od Dinkumware
* [[Newlib]] – implementace pro vestavěné systémy (bez MMU)<ref>[http://www.cygwin.com/ml/newlib/2006/msg00224.html Re: Does Newlib support mmu-less CPUs?]</ref>
* [[klibc]] – implementace primárně pro start Linuxu (kernel-libc)
* [[EGLIBC]] – varianta glibc pro vestavěné systémy