Biblioteka standardowa języka C

Biblioteka standardowa języka C – biblioteka zawierająca podstawowe procedury języka C. Biblioteka ta jest częścią standardu języka C, początkowo regulowanego normą ANSI a obecnie normą ISO.

Wersje
Biblioteka standardowa języka C jest częścią standardu języka C, opublikowanego jako norma ISO/IEC 9989. Pierwszą wersją języka C ustandaryzowanego przez ISO była wersja ISO/IEC 9989:1990, bazująca bezpośrednio na poprzedzającym ją standardzie ANSI X3.159-1989. Następnie standard odświeżano w roku 1999 (ISO/IEC 9989:1999, znana jako C99), potem w roku 2011 (ISO/IEC 9989:2011, znana jako C11) i w roku 2018 (ISO/IEC 9989:2018 – obecnie obowiązująca C18). Wraz z każdą wersją standardu języka rozszerzano również możliwości biblioteki standardowej – przykładowo, w wersji C99 dodano m.in. typ liczb zespolonych (nagłówek complex.h), a w wersji C11 dodano m.in. funkcje do manipulacji znakami w unikodzie (uchar.h). Obecnie obowiązującą wersją jest C18.

Funkcje biblioteki standardowej języka C 
Biblioteka zawiera następujące bloki funkcjonalne (w nawiasie podano plik nagłówkowy, który trzeba załączyć by mieć dostęp do pożądanych funkcji):

 wybór podstawowych funkcji wspomagających programowanie w języku, w tym procedury alokacji pamięci, funkcje pseudolosowe i podstawowe konwersje (<stdlib.h>) oraz definicje niektórych typów (<stddef.h>)
 buforowane i formatowane funkcje wejścia i wyjścia, w tym funkcje z grupy printf (<stdio.h>)
 procedury matematyczne, w tym podstawowe funkcje i stałe (<math.h>), liczby zespolone (<complex.h>), funkcje wspierające obsługę liczb zmiennopozycyjnych (<float.h>, <fenv.h>), generyczne makra dla funkcji matematycznych (<tgmath.h>)
 procedury operowania na łańcuchach tekstowych (<string.h>)
 badanie własności znaków i proste konwersje znakowe (<ctype.h>, <wctype.h>)
 funkcje daty i czasu (<time.h>)
 obsługa lokalizacji, m.in. sposób formatowania dat (<locale.h>)
 definicje maksymalnych i minimalnych wartości dla wbudowanych typów całkowitych (<limits.h>)
 wsparcie dla typów nieobecnych w czystym języku C: typy całkowite różnych długości (<inttypes.h>, <stdint.h>), typ boolowski (<stdbool.h>), wielobajtowe typy znakowe: (<wchar.h>, <uchar.h>)
 obsługa wykonywania programu, w tym obsługa argumentów wywołania programu (<stdarg.h>), obsługa tzw. „dalekich skoków” (<setjmp.h>), wartości błędów zwracane przez funkcje (<errno.h>), obsługa funkcji, z których nie ma powrotu (<stdnoreturn.h>), obsługa sygnałów (<signal.h>) oraz obsługa wielowątkowości (<threads.h>) i operacje atomowe (<stdatomic.h>)
 obsługa asercji (<assert.h>)
 makra dot. operacji bitowych i logicznych zgodna z normą ISO 646 (<iso646.h>)
 zarządzanie sposobem upakowania danych w pamięci (<stdalign.h>)

Standardowa biblioteka języka C nie definiuje następujących zestawów funkcji:

 Interfejsu do zarządzania zawartością systemu plików (funkcje takie jak np. tworzenie, usuwanie, zmiana nazwy plików)
 Zarządzania procesami w systemie operacyjnym (cykl życia procesu, uruchamianie zewnętrznych aplikacji) 
 Komunikacji międzyprocesowej
 Obsługi wyszukiwania wzorców i wyrażeń regularnych 
 Funkcji komunikacyjnych z wykorzystaniem sieci (np. TCP/IP) 
 Niskopoziomowych funkcji wejścia i wyjścia
 Niskopoziomowych funkcji obsługi terminala

Tego typu funkcje zwykle są obecne bibliotekach języka C obecnych w systemach operacyjnych, jako rozszerzenie standardowej biblioteki. W systemach Unix biblioteki języka C (libc) typowo implementują interfejs POSIX, który m.in. rozszerza możliwości biblioteki o wyżej wymienione grupy funkcji.

Implementacje
Istnieje wiele implementacji biblioteki standardowej języka C. W systemach Unix i systemach uniksopodobnych biblioteka standardowa języka C jest częścią szerszej tzw. biblioteki języka C (w skrócie libc), która jest używana, bezpośrednio lub pośrednio, przez praktycznie każdy program, niezależnie od języka w jakim jest napisany. Realizacją biblioteki libc jest na przykład biblioteka GNU libc (aktualnie najnowsza jest wersja glibc 2.33, wydana 1 lutego 2021 roku), używana m.in. w systemie GNU/Linux. Innym wariantem libc jest wersja BSD libc.

W systemie Windows, biblioteka standardowa języka C jest zaimplementowana jako część tzw. Universal C Runtime Libraries (UCRT).

Istnieją także lekkie implementacje biblioteki standardowej języka C, jak np. diet libc czy uClibc, projektowane z myślą o urządzeniach przenośnych lub w celu stworzenia implementacji wolnej od historycznych zaszłości, którą będzie łatwiej rozwijać.

Za dosyć lekki wariant biblioteki standardowej języka C uchodzi biblioteka Bionic, która jest używana w systemie Android.

Zobacz również
 GLib (G Library) - niskopoziomowa, narzędziowa biblioteka funkcji dla programistów języka C wykorzystywana w GTK+ i Gnome

Przypisy 

Biblioteki standardowe