Den standard bibliotek af C er nu en standardiseret samling af headere og rutiner , der anvendes til at gennemføre fælles operationer, såsom input / output og styring af strenge i C-sprog I modsætning til andre sprog som Pascal og PL / I , er C ikke omfatter nøgleord for disse opgaver , så næsten alle programmer skrevet i C bruger standardbiblioteket, hvis kun for at vise et resultat.
Navnet og signaturen ("prototypen" i C) for hver funktion er beskrevet i overskrifter, der er inkluderet i kildekoden , mens objektkoden for funktionerne er adskilt i et softwarebibliotek , som kun vil være knyttet til kildekoden . resten af programmet, når sammenkædning . Overskrifternes navn og navneområde er blevet almindeligt. Oftest er hver overskrift en separat fil , men organisationen af implementeringer er forskellig. Standardbiblioteket kom oprindeligt med compileren , men i dag er det ofte en del af operativsystemet . På Unix- systemer findes det normalt i biblioteket /usr/lib/og er opkaldt efter libc.aeller libc.so ; header-filerne findes i biblioteket /usr/include. Imidlertid ved compileren altid, hvor disse filer er placeret, så der er ingen grund til at fortælle det.
På Linux bruges glibc- biblioteket normalt ; under Windows er det generelt standardbiblioteket i Visual C ++ , kaldet MSVCR*.dll, fordi det er tilgængeligt uafhængigt af den anvendte C-compiler. Da C-compilere ofte tilbyder mere funktionalitet end dem, der er specificeret i ISO- og POSIX C- standarderne , er et standardbibliotek, der leveres med en bestemt compiler, dårligt kompatibelt med standardbibliotekerne i andre compilers til funktioner, der ikke er standardiserede.
Erfaringen har vist, at det meste af standard C-biblioteket er godt designet. Nogle dele bagud ser imidlertid ud til at være fejl. Linjelæsningsfunktionen getsog brugen af scanfat læse inputstrenge er kilden til mange bufferoverløb , og de fleste programmeringsvejledninger anbefaler, at man undgår deres brug. En anden oldie er strtok, en funktion designet som en primitiv leksikalsk analysator, men som er ret "skrøbelig" og vanskelig at bruge. Endelig er forvaltningen af datoer og tidspunkter primitiv, især med den virtuelle umulighed at styre tidszoner.
Unix og programmeringssprog C blev oprettet af laboratorierne AT & T og Bell (AT & T's Bell Laboratories) i begyndelsen af 1970'erne . Det primitive C-sprog leverede ikke indbygget funktionalitet som I / O-operationer (i modsætning til traditionelle sprog som Pascal og Fortran ). Over tid har C-brugerfællesskaber delt ideer og implementeringer af det, vi nu kalder C Standard Library for at levere disse funktioner. Mange af disse ideer blev indarbejdet i den standardiserede definition af C-programmeringssproget.
I løbet af 1970'erne blev C populær. Mange universiteter og organisationer har skabt deres egne variationer af dette sprog til deres projekter. I 1980'erne dukkede kompatibilitetsproblemer mellem de forskellige implementeringer af C op.
I 1983 den American National Standards Institute (ANSI) dannede en komité til at etablere en standard specifikation for C, kendt som "ANSI C". Dette arbejde kulminerede med oprettelsen af C89- standarden i 1989 . Del af den opnåede standard var et sæt funktioner bibliotek kaldet standard ANSI C bibliotek ( ANSI libc ). Denne standard blev en international standard i 1990 og er også kendt som ISO C (ISO C) .
Senere revisioner af ISO C-standarden tilføjede nye funktioner og overskrifter til biblioteket. Support til disse udvidelser varierer efter implementering. Overskrifter <iso646.h>, <wchar.h>og <wctype.h>blev tilføjet med det normative ændringsforslag 1 ( Normativt ændringsforslag 1 ), i det følgende forkortet med ændring 1 , som er en tilføjelse til standarden C ratificeret i 1995 . Headerne <complex.h>, <fenv.h>, <inttypes.h>, <stdbool.h>, <stdint.h>og <tgmath.h>blev tilsat med C99, en revision af C-standard, der blev offentliggjort i 1999 .
ISO C-standardbiblioteket består af 24 overskrifter, der kan indgå i et programmers projekt med et enkelt direktiv. Hver header indeholder funktionsprototyper, typedefinitioner og makroer. Indholdet af disse overskrifter er beskrevet nedenfor.
Sammenlignet med andre sprog (f.eks. Java ) er ISO-standard C-biblioteket lille. Det giver et grundlæggende sæt matematik, strengmanipulation , typekonvertering og input / output- funktioner, der håndterer filer og terminaler. Det inkluderer ikke en standardbase af "containertyper", ligesom standardskabelonbiblioteket i C ++ -sprog . Det efterlader grafiske brugergrænseflader (GUI), netværksværktøjer, synkroniseringsfunktioner mellem opgaver og overflod af andre funktioner, som Java leverer som standard. Den største fordel ved en lille standard bibliotek er, at det er meget lettere at give et arbejdsmiljø for C ISO end for andre sprog, og portering C-sprog applikationer til nye platforme er derfor relativt hurtigt.
Mange andre biblioteker er skrevet for at udvikle funktionalitet svarende til den, der leveres af andre sprog i deres standardbibliotek. For eksempel udviklede det foreslåede skrivebordsmiljø GNOME Box Tools GIMP (GIMP ToolKit, GTK) og GLib , et bibliotek, der indeholder datastrukturbeholdere, og der er mange andre kendte egenskaber. Af denne række tilgængelige biblioteker har nogle værktøjssæt vist overlegne muligheder over tid. Den største ulempe er, at de ofte ikke fungerer særlig godt sammen, programmører er ofte tvunget til at jonglere med forskellige biblioteker, og nogle funktioner kan være til stede i forskellige former under hver enkelt platform, undertiden endda inden for den samme vigtige software.
Den C ++ programmeringssprog overtager funktionaliteten af standard C ISO bibliotek, men gør flere ændringer til det, såsom at omdanne navnene på de overskrifter fra <xxx.h>til <cxxx>(dog navne i C-stil er stadig tilgængelige, selvom forældet ) og placer alle identifikatorer i navneområdet (navneområdet) std.