Ця стаття не містить . (серпень 2019) |
Стандартна бібліотека мови C (також відома як libc) — стандартна бібліотека для мови програмування C, що відповідає стандартам ISO. Починаючи з оригінального стандарту ANSI C, бібліотека C розроблена у той же час, що й специфікація C POSIX library, яка є його надмножиною.
Структура
Ім'я та характеристики кожної функції вказуються у заголовному файлі, але поточна реалізація функцій описана окремо в бібліотечному файлі. Найменування і можливості заголовних файлів стають загальними, але організація бібліотек залишається різнотипною. Через те, що компілятори мови C часто забезпечують розширену функціональність, не визначену стандартом ANSI C, стандартна бібліотека одного компілятора несумісна зі стандартними бібліотеками інших компіляторів.[]
Історія
Мова програмування C до стандартизації не забезпечувала вбудованої функціональності, як, наприклад, операції вводу-виводу (на відміну від таких традиційних мов, як Кобол і Фортран). Для підтримки цієї функціональності у спільноті програмістів, які працювали з мовою C, зародилися ідеї, реалізовані в те, що зараз називається Стандартною бібліотекою мови C. Більшість цих ідей в підсумку об'єдналися у визначенні стандарту мови програмування C.
Стандарт ANSI
І Unix, і C були створені в AT&T Bell Laboratories в кінці 1960-х — початку 1970-х. В 1970-ті мову програмування C почав користуватися неймовірною популярністю. Безліч університетів і організацій розпочали створення власних варіантів мови, більш відповідних для власних потреб. З початком 1980-х проблеми сумісності між різними реалізаціями мови C стали занадто очевидними. У 1983 році Американський національний інститут стандартів (ANSI) сформував комітет для прийняття стандарту мови C, відомий як «ANSI C». Ця робота вилилася в створення так званого стандарту C89 в 1989. Частина підсумкового стандарту була набором бібліотек, названа Стандартна бібліотека ANSI C.
Подальші версії стандарту мови C додавали деякі нові і найбільш корисні заголовні файли в бібліотеку. Підтримка цих нових розширень залежала від реалізації.
Заголовні файли <iso646.h>, <wchar.h> і <wctype.h> були додані в Додатку 1 (скорочено NA1) — доповненні до Стандарту мови C, ратифікованій в 1995.
Заголовні файли <complex.h>, <fenv.h>, <inttypes.h>, <stdbool.h>, <stdint.h> і <tgmath.h> додані у стандарті C99, опублікованому 1999-го року.
Стандартна бібліотека ANSI C складається з 24 заголовних файлів, кожен з яких можна підключати до програмного проекту за допомогою однієї директиви. Кожен заголовний файл містить оголошення однієї або більше функцій, визначення типів даних і макроси. Зміст цих заголовків файлів перераховується нижче.
В порівнянні з деякими іншими мовами (наприклад Java) стандартна бібліотека вкрай мала. Бібліотека забезпечує підтримку основного набору математичних функцій, обробку рядків, конвертацію типів, файлове та консольне введення-виведення. Вона не містить стандартний набір «контейнерних типів» як стандартна бібліотека шаблонів мови C++, компоненти для роботи з графічним призначеним для користувача інтерфейсом (GUI), мережею[
] та іншої різноманітної функціональності, яку Java підтримує за стандартом. Головною перевагою маленької стандартної бібліотеки є спрощення роботи з оточенням ANSI C порівняно з іншими мовами, а отже і спрощення портування програм мовою C на нові платформи.Безліч інших бібліотек було розроблено для підтримки схожої функціональності, забезпечувана іншими мовами в їх стандартних бібліотеках. Наприклад, у проекті розробки робочого середовища GNOME був розроблений набір графічних інструментів GTK + та GLib — бібліотека контейнерних структур даних, як втім і безліч інших відомих прикладів. Різноманітність доступних бібліотек означає, що деякі інструменти верхнього рівня, з часом підтвердили свою корисність. Значним мінусом є те, що вони часто не надто успішно взаємодіють один з одним, тому програмістам часто звичніше працювати з різними наборами бібліотек, а їх набори можуть бути доступні на різних специфічних платформах.
Бібліотечні заголовкові файли ANSI C
Назва | Стандарт | Опис |
---|---|---|
<assert.h> | Містить макрос тверджень, використовуваний для виявлення логічних і деяких інших типів помилок у відлагодженій версії програми. | |
<complex.h> | C99 | Набір функцій для роботи з комплексними числами. |
<ctype.h> | Містить функції, використовувані для класифікації символів за їх типами або для конвертації між верхнім і нижнім регістрами незалежно від використовуваного кодування (зазвичай ASCII або одне з її розширень, хоча є й реалізації, що використовують EBCDIC). | |
<errno.h> | Для перевірки кодів помилок, що повертаються бібліотечними функціями. | |
<fenv.h> | C99 | Для управління середовищем, що використовує числа з рухомою комою. |
<float.h> | Містить заздалегідь визначені константи, що описують специфіку реалізації властивостей бібліотеки для роботи з числами з рухомою комою, як, наприклад, мінімальна різниця між двома різними числами з рухомою комою (_EPSILON), максимальне число цифр точності (_DIG) і область допустимих чисел (_MIN, _MAX). | |
<inttypes.h> | C99 | Для точної конвертації цілих типів. |
<iso646.h> | C95 | Для програмування в кодуванні . |
<limits.h> | Містить наперед задані константи, що визначають специфіку реалізації властивостей цілих типів, як, наприклад, область припустимих значень (_MIN, _MAX). | |
<locale.h> | Для setlocale () і пов'язаних констант. Використовується для вибору відповідної мови. | |
<math.h> | Для обчислення основних математичних функцій | |
Оголошує макроси setjmp </ tt> і longjmp </ tt>, використовувані для нелокальних переходів | ||
<signal.h> | Для управління обробкою [[Сигнал (операційні системи> | сигналів]] | |
С11 | Макроси Alignas та Alignof | |
Для доступу до різної кількості аргументів, переданих функціям. | ||
<stdbool.h> | C99 | Для булевих типів даних. |
<stdint.h> | C99 | Для визначення різних типів цілих чисел. |
<stddef.h> | Для визначення декількох стандартних типів і макросів. | |
<stdio.h> | Реалізує основні можливості введення і виведення в мові C. Цей файл містить дуже важливу функцію . | |
Для виконання безлічі операцій, включаючи конвертацію, генерацію псевдовипадкових чисел, виділення пам'яті, контроль процесів, оточення, сигналів, пошуку і сортування. | ||
<string.h> | Для роботи з різними видами рядків. | |
C99 | Для типових математичних функцій. | |
<time.h> | Для конвертації між різними форматами часу та дати. | |
<wchar.h> | NA1 | Для обробки «широких» потоків і декількох видів рядків за допомогою «широких» символів (підтримка набору мов). |
<wctype.h> | NA1 | Для класифікації «широких» символів. |
Стандартна бібліотека C в інших мовах
Деякі мови забезпечують функціональність стандартної бібліотеки C за допомогою своїх власних бібліотек. Бібліотека може бути адаптована для структур мови, але семантика операцій залишається схожою. Мова програмування C ++, наприклад, містить функціональність стандартної бібліотеки ANSI C в просторі імен std (наприклад, std :: printf, std :: atoi, std :: feof і т. Д.), В заголовних файлах з схожими іменами як в C («cstdio», «cmath», «cstdlib» і т. д.). До інших мов, в яких застосовуються схожі підходи відносяться, наприклад, D і Python. В останньому, наприклад, вбудований об'єкт file визначений як «реалізований за допомогою пакета stdio мови C»[], так що доступні операції (відкриття, читання, запис і т. Д.), Як очікується, повинні мати поведінку як у відповідних Функ мови C.
Реалізації
Існує безліч реалізацій, що поставляються як з різними операційними системами, так і з компіляторами мови C. На BSD системах, наприклад, системна бібліотека вбудована в операційну систему і підтримується загальним репозиторієм початкових кодів системи. На більшості систем бібліотека може бути знайдена під ім'ям « libc
».
Хоча існує дуже багато реалізацій, ось невеликий список найпопулярніших бібліотек:
- GNU C Library — найпоширеніша реалізація, використовувана в Linux
- Dietlibc — альтернативна невелика реалізація Стандартної бібліотеки мови C
- [en] — Стандартна бібліотека мови C для вбудованих систем на базі Linux
- — Стандартна бібліотека мови C для вбудованих систем (без MMU)
- — застосовується головним чином для завантаження Linux-систем.
- Eglibc — різновид glibc для вбудованих систем.
- musl — орієнтована на вбудовувані Linux-системи.
Примітки
- §7. ISO/IEC 9899:2018(E): Programming Languages - C (англ.). ISO/IEC. 2018.
- The GNU C Library – Introduction. gnu.org. Процитовано 5 грудня 2013.
- Difference between C standard library and C POSIX library. stackoverflow.com. 2012. Процитовано 4 березня 2015.
- Re: Чи підтримує Newlib процесори без MMU?.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno serpen 2019 Standartna biblioteka movi C takozh vidoma yak libc standartna biblioteka dlya movi programuvannya C sho vidpovidaye standartam ISO Pochinayuchi z originalnogo standartu ANSI C biblioteka C rozroblena u toj zhe chas sho j specifikaciya C POSIX library yaka ye jogo nadmnozhinoyu StrukturaIm ya ta harakteristiki kozhnoyi funkciyi vkazuyutsya u zagolovnomu fajli ale potochna realizaciya funkcij opisana okremo v bibliotechnomu fajli Najmenuvannya i mozhlivosti zagolovnih fajliv stayut zagalnimi ale organizaciya bibliotek zalishayetsya riznotipnoyu Cherez te sho kompilyatori movi C chasto zabezpechuyut rozshirenu funkcionalnist ne viznachenu standartom ANSI C standartna biblioteka odnogo kompilyatora nesumisna zi standartnimi bibliotekami inshih kompilyatoriv dzherelo IstoriyaMova programuvannya C do standartizaciyi ne zabezpechuvala vbudovanoyi funkcionalnosti yak napriklad operaciyi vvodu vivodu na vidminu vid takih tradicijnih mov yak Kobol i Fortran Dlya pidtrimki ciyeyi funkcionalnosti u spilnoti programistiv yaki pracyuvali z movoyu C zarodilisya ideyi realizovani v te sho zaraz nazivayetsya Standartnoyu bibliotekoyu movi C Bilshist cih idej v pidsumku ob yednalisya u viznachenni standartu movi programuvannya C Standart ANSII Unix i C buli stvoreni v AT amp T Bell Laboratories v kinci 1960 h pochatku 1970 h V 1970 ti movu programuvannya C pochav koristuvatisya nejmovirnoyu populyarnistyu Bezlich universitetiv i organizacij rozpochali stvorennya vlasnih variantiv movi bilsh vidpovidnih dlya vlasnih potreb Z pochatkom 1980 h problemi sumisnosti mizh riznimi realizaciyami movi C stali zanadto ochevidnimi U 1983 roci Amerikanskij nacionalnij institut standartiv ANSI sformuvav komitet dlya prijnyattya standartu movi C vidomij yak ANSI C Cya robota vililasya v stvorennya tak zvanogo standartu C89 v 1989 Chastina pidsumkovogo standartu bula naborom bibliotek nazvana Standartna biblioteka ANSI C Podalshi versiyi standartu movi C dodavali deyaki novi i najbilsh korisni zagolovni fajli v biblioteku Pidtrimka cih novih rozshiren zalezhala vid realizaciyi Zagolovni fajli lt iso646 h gt lt wchar h gt i lt wctype h gt buli dodani v Dodatku 1 skorocheno NA1 dopovnenni do Standartu movi C ratifikovanij v 1995 Zagolovni fajli lt complex h gt lt fenv h gt lt inttypes h gt lt stdbool h gt lt stdint h gt i lt tgmath h gt dodani u standarti C99 opublikovanomu 1999 go roku Standartna biblioteka ANSI C skladayetsya z 24 zagolovnih fajliv kozhen z yakih mozhna pidklyuchati do programnogo proektu za dopomogoyu odniyeyi direktivi Kozhen zagolovnij fajl mistit ogoloshennya odniyeyi abo bilshe funkcij viznachennya tipiv danih i makrosi Zmist cih zagolovkiv fajliv pererahovuyetsya nizhche V porivnyanni z deyakimi inshimi movami napriklad Java standartna biblioteka vkraj mala Biblioteka zabezpechuye pidtrimku osnovnogo naboru matematichnih funkcij obrobku ryadkiv konvertaciyu tipiv fajlove ta konsolne vvedennya vivedennya Vona ne mistit standartnij nabir kontejnernih tipiv yak standartna biblioteka shabloniv movi C komponenti dlya roboti z grafichnim priznachenim dlya koristuvacha interfejsom GUI merezheyu sumnivno obgovoriti ta inshoyi riznomanitnoyi funkcionalnosti yaku Java pidtrimuye za standartom Golovnoyu perevagoyu malenkoyi standartnoyi biblioteki ye sproshennya roboti z otochennyam ANSI C porivnyano z inshimi movami a otzhe i sproshennya portuvannya program movoyu C na novi platformi Bezlich inshih bibliotek bulo rozrobleno dlya pidtrimki shozhoyi funkcionalnosti zabezpechuvana inshimi movami v yih standartnih bibliotekah Napriklad u proekti rozrobki robochogo seredovisha GNOME buv rozroblenij nabir grafichnih instrumentiv GTK ta GLib biblioteka kontejnernih struktur danih yak vtim i bezlich inshih vidomih prikladiv Riznomanitnist dostupnih bibliotek oznachaye sho deyaki instrumenti verhnogo rivnya z chasom pidtverdili svoyu korisnist Znachnim minusom ye te sho voni chasto ne nadto uspishno vzayemodiyut odin z odnim tomu programistam chasto zvichnishe pracyuvati z riznimi naborami bibliotek a yih nabori mozhut buti dostupni na riznih specifichnih platformah Bibliotechni zagolovkovi fajli ANSI C Nazva Standart Opis lt assert h gt Mistit makros tverdzhen vikoristovuvanij dlya viyavlennya logichnih i deyakih inshih tipiv pomilok u vidlagodzhenij versiyi programi lt complex h gt C99 Nabir funkcij dlya roboti z kompleksnimi chislami lt ctype h gt Mistit funkciyi vikoristovuvani dlya klasifikaciyi simvoliv za yih tipami abo dlya konvertaciyi mizh verhnim i nizhnim registrami nezalezhno vid vikoristovuvanogo koduvannya zazvichaj ASCII abo odne z yiyi rozshiren hocha ye j realizaciyi sho vikoristovuyut EBCDIC lt errno h gt Dlya perevirki kodiv pomilok sho povertayutsya bibliotechnimi funkciyami lt fenv h gt C99 Dlya upravlinnya seredovishem sho vikoristovuye chisla z ruhomoyu komoyu lt float h gt Mistit zazdalegid viznacheni konstanti sho opisuyut specifiku realizaciyi vlastivostej biblioteki dlya roboti z chislami z ruhomoyu komoyu yak napriklad minimalna riznicya mizh dvoma riznimi chislami z ruhomoyu komoyu EPSILON maksimalne chislo cifr tochnosti DIG i oblast dopustimih chisel MIN MAX lt inttypes h gt C99 Dlya tochnoyi konvertaciyi cilih tipiv lt iso646 h gt C95 Dlya programuvannya v koduvanni lt limits h gt Mistit napered zadani konstanti sho viznachayut specifiku realizaciyi vlastivostej cilih tipiv yak napriklad oblast pripustimih znachen MIN MAX lt locale h gt Dlya setlocale i pov yazanih konstant Vikoristovuyetsya dlya viboru vidpovidnoyi movi lt math h gt Dlya obchislennya osnovnih matematichnih funkcijOgoloshuye makrosi setjmp lt tt gt i longjmp lt tt gt vikoristovuvani dlya nelokalnih perehodiv lt signal h gt Dlya upravlinnya obrobkoyu Signal operacijni sistemi gt signaliv S11 Makrosi Alignas ta AlignofDlya dostupu do riznoyi kilkosti argumentiv peredanih funkciyam lt stdbool h gt C99 Dlya bulevih tipiv danih lt stdint h gt C99 Dlya viznachennya riznih tipiv cilih chisel lt stddef h gt Dlya viznachennya dekilkoh standartnih tipiv i makrosiv lt stdio h gt Realizuye osnovni mozhlivosti vvedennya i vivedennya v movi C Cej fajl mistit duzhe vazhlivu funkciyu Dlya vikonannya bezlichi operacij vklyuchayuchi konvertaciyu generaciyu psevdovipadkovih chisel vidilennya pam yati kontrol procesiv otochennya signaliv poshuku i sortuvannya lt string h gt Dlya roboti z riznimi vidami ryadkiv C99 Dlya tipovih matematichnih funkcij lt time h gt Dlya konvertaciyi mizh riznimi formatami chasu ta dati lt wchar h gt NA1 Dlya obrobki shirokih potokiv i dekilkoh vidiv ryadkiv za dopomogoyu shirokih simvoliv pidtrimka naboru mov lt wctype h gt NA1 Dlya klasifikaciyi shirokih simvoliv Standartna biblioteka C v inshih movahDeyaki movi zabezpechuyut funkcionalnist standartnoyi biblioteki C za dopomogoyu svoyih vlasnih bibliotek Biblioteka mozhe buti adaptovana dlya struktur movi ale semantika operacij zalishayetsya shozhoyu Mova programuvannya C napriklad mistit funkcionalnist standartnoyi biblioteki ANSI C v prostori imen std napriklad std printf std atoi std feof i t D V zagolovnih fajlah z shozhimi imenami yak v C cstdio cmath cstdlib i t d Do inshih mov v yakih zastosovuyutsya shozhi pidhodi vidnosyatsya napriklad D i Python V ostannomu napriklad vbudovanij ob yekt file viznachenij yak realizovanij za dopomogoyu paketa stdio movi C dzherelo tak sho dostupni operaciyi vidkrittya chitannya zapis i t D Yak ochikuyetsya povinni mati povedinku yak u vidpovidnih Funk movi C RealizaciyiIsnuye bezlich realizacij sho postavlyayutsya yak z riznimi operacijnimi sistemami tak i z kompilyatorami movi C Na BSD sistemah napriklad sistemna biblioteka vbudovana v operacijnu sistemu i pidtrimuyetsya zagalnim repozitoriyem pochatkovih kodiv sistemi Na bilshosti sistem biblioteka mozhe buti znajdena pid im yam libc Hocha isnuye duzhe bagato realizacij os nevelikij spisok najpopulyarnishih bibliotek GNU C Library najposhirenisha realizaciya vikoristovuvana v Linux Dietlibc alternativna nevelika realizaciya Standartnoyi biblioteki movi C en Standartna biblioteka movi C dlya vbudovanih sistem na bazi Linux Standartna biblioteka movi C dlya vbudovanih sistem bez MMU zastosovuyetsya golovnim chinom dlya zavantazhennya Linux sistem Eglibc riznovid glibc dlya vbudovanih sistem musl oriyentovana na vbudovuvani Linux sistemi Primitki 7 ISO IEC 9899 2018 E Programming Languages C angl ISO IEC 2018 The GNU C Library Introduction gnu org Procitovano 5 grudnya 2013 Difference between C standard library and C POSIX library stackoverflow com 2012 Procitovano 4 bereznya 2015 Re Chi pidtrimuye Newlib procesori bez MMU