Стандартная бібліятэка C
Стандартнай бібліятэкай мовы C (таксама вядомая як libc, crt) называецца частка стандарту ANSI C, прысвечаная загалоўкавым файлам і бібліятэчным падпраграмам. З'яўляецца апісаннем рэалізацыі агульных аперацый, такіх як апрацоўка ўводу-вываду і радкоў, у мове праграмавання C. Стандартная бібліятэка мовы C — гэта апісанне праграмнага інтэрфейса, а не сапраўдная бібліятэка, прыдатная для ўжывання ў працэсе кампіляцыі. СтруктураІмя і характарыстыка кожнай функцыі ўказваюцца ў файле, што завецца загалоўкавым, але бягучая рэфалізацыя функцый апісана асобна ў бібліятэчным файле. Найменаванне і магчымасці загалоўкавых файлаў становяцца агульнымі, але арганізацыя бібліятэк па-ранейшаму застаецца разнатыпный. Стандартная бібліятэка звычайна пастаўляецца разам з кампілятарам. Так як кампілятары мовы C часта забяспечваюць пашыраную функцыянальнасць, не вызначанаю стандартам ANSI C, стандартная бібліятэка аднаго кампілятара можа быць несумяшчальнай са стандартнымі бібліятэкамі іншых кампілятараў. Меркаванне аб структурыБольшая частка стандартнай бібліятэкі мовы C робіць уражанне ўдала спраектаванай. Некаторыя асобныя часткі, што давалі перавагу ў мінулым, могуць правакаваць памылкі. Функцыі радковага ўводу
Пэўных функцый стандартнай бібліятэкі варта пазбягаць пры распрацоўцы шматпатокавых пракладанняў. Прымітывы кантролю патокаў прызначаліся для астатняй часткі АС і ігнаруюць агульныя стандарты, як напрыклад, бібліятэку патокаў POSIX, бяркуючы, што праграмісты мовы C самастойна аб гэтым паклапоцяцца, працуючы з паўторным выкарыстаннем і сінхранізацыяй. Ні мова C, ні яго стандартная бібліятэка ніяк не правяраюць падобныя сістэмаспецыфічныя вынікі. ГісторыяМова праграмавання Сі да стандартызацыі не забяспечвала ўбудаванай функцыянальнасці, як напрыклад аперацыі ўводу-вываду (у адрозненні ад такіх традыцыйных моў, як COBOL і FORTRAN). Пазней у суполцы праграмістаў, што працавалі з мовай Сі, зарадзіліся ідэі, якія рэалізаваліся ў тое, што мы зараз называем Стандартнай бібліятэкай мовы Сі, для падтрымкі гэтай функцыянальнасці. Большасць гэтых ідэй у выніку аб'ядналіся ў вызначэнне стандарту мовы праграмавання Сі. І Unix, і Сі былі створаны ў AT&T’s Bell Laboratories на прыканцы 1960-х — пачатку 1970-х. У 1970-я мова праграмавання Сі пачала карыстацца неверагоднай папулярнасцю. Мноства універсітэтаў і арганізацый пачалі ствараць уласныя варыянты мовы, больш прыдатная для ўласных патрэбаў. На пачатку 1980-х праблемы сумяшчальнасці паміж рознымі рэалізацыямі мовы Сі сталі надта відавочнымі. У 1983 годзе Амерыканскі нацыянальны інстытут стандартаў (ANSI) сфармаваў камітэт для прыняцца стандарту мовы Сі, вядомы як «ANSI C». Гэта праца вылілася ў стварэнне так званага стандарта C89 у 1989 годзе. Частка выніковага стандарта была наборам бібліятэк, названай Стандартная бібліятэка ANSI C. Наступныя версіі стандарту мовы Сі дадавалі некаторыя новыі і найбольш карысныя загалоўкавыя файлы ў бібліятэку. падтрымка гэтых новых пашырэнняў залежала ад рэалізацыі. Загалоўкавыя файлы <iso646.h>, <wchar.h> і <wctype.h> былі даданы ў Дадатак 1 (Normative Addendum, скарочана NA1) — пашырэнне да стандарта мовы Сі, ратыфікаваным у 1995. Загалоўкавыя файлы <complex.h>, <fenv.h>, <inttypes.h>, <stdbool.h>, <stdint.h> і <tgmath.h> былі даданы ў C99, версіі Стандарту мовы Сі, апублікаваным у 1999. Стандарт ANSIСтандартная бібліятэка ANSI C складаецца з 24 загалоўкавых файлаў, кожны з якіх можна далучыць да праграмнага праекта з дапамогай адной дырэктывы. Кожны загалоўкавы файл змяшчае аб'яўленні адной ці болей функцый, вызначэнні тыпаў даных і макрасы. Змест гэтых загалоўкавых файлаў пералічваецца ніжэй. У параўнанні з некаторымі іншымі мовами (напрыклад Java) стандартная бібліятэка надзвычай меленькая. Библіятэка забяспечвае падтрымку асноўнага набору матэматычных функцый, апрацоўку радкоў, канвертацыю тыпаў, файлавы і кансолны ўвод-вывад. Яна не змяшчае стандартны набор «кантэйнерных тыпаў», як стандартная бібліятэка шаблонаў C++, кампаненты для работы з графічным інтерфейсам карыстальніка (GUI), сеткай і іншай разнастайнай функцыянальнасцю, якую Java падтрымлівае паводле стандарта. Галоўнай перавагай маленькай стандартнай бібліятэкі з'яўляецца спрашчэнне працы за асяроддзем ANSI C у параўнанні з іншымі мовамі, і спрашчэнне партавання праграм на мове Сі на новыя платформы. Мноства іншых бібліятэк было распрацавана для падтрымкі падобнай функцыянальнасці, што забяспечваецца іншымі мовамі ў іх стандартных бібліятэках. Напрыклад, у праекце распрацоўкі асяроддзя рабочага стала GNOME быў распрацаваны набор графічных інструментаў GTK+ і GLib — бібліятэка кантэйнерных структур даных, як і мноства іншых вядомых прыкладаў. Разнастайнасць даступных бібліятэк значыць, што некаторыя інструменты верхняга ўзроўню з уягам часу пацвердзілі сваю карысць. Значным мінусам з'яўляецца тое, што яны часто не надта добра ўзаемадзейнічаюць адзін з адным, таму праграмістам зачастую больш звыкла працаваць з рознымі наборамі бібліятэк, а іх наборы могуць быць даступнымі на розных спецыфічных платформах.
Стандартная бібліятэка Сі ў іншых мовахНекаторыя мовы забяспечваюць функцыянальнасць стандартнай бібліятэкі Сі з дапамогай сваіх уласных бібліятэк. Бібліятэка можа быць адаптавана для структур мовы, але семантыка аперацый застаецца падобнай. Мова праграмавання C++ змяшчае функцыянальнасць стандартнай бібліятэкі ANSI C у прасторы імёнаў std (напрыклад Агульная падтрымка бібліятэкПакуль не стандартызавана, але праграмы на мове Сі могуць залежаць ад бібліятэк падпраграм, якія змяшчаюць код, ужываны кампілятарам падчас працы. Код, што ініцыялізуе працэс для аперацыйнай сістэмы перад выклікам Стандартная бібліятэка мовы Сі толькі рэгламентуе наяўнасць вышэйзгаданых падпраграм і іх паводзіны. Паколькі рэалізацыя кампілятара можа залежаць ад наяўнасці гэтых дадатковых функцый, усё залежыць ад таго, якія падпраграмы змешчаны ў Стандартную бібліятэку мовы Сі, такім чынам, любая праграма, што распрацавана з іх дапамогай, будзе мець у іх патрэбу. Убудаваныя функцыі кампілятараНекаторыя кампілятары (напрыклад, GCC[1]) падтрымліваюць унутраныя версіі мноства функцый Стандартнай бібліятэкі мовы Сі, то-бок, рэалізацыі функцый запісваюцца ў кампіляваны аб'ектны модуль, а праграма выклікае ўнутраныя версіі замест функцый агульнай бібліятэкі Сі. Гэта змяншае накладныя выдаткі на выклік функцыі, асабліва калі выклік функцыі замяняецца ўбудаванымі варыянтамі і дазваляецца выкарыстанне іншых форм аптымізацыі (калі кампілятар падтрымлівае кіраванне характарыстыкамі ўнутраных варыянтаў), але можа прыводзіць да праблем пры адладцы (унутраныя версіі не могуць быць замененыя інструментальнымі версіямі для праверкі). Стандартная бібліятэка POSIXPOSIX (і SUS) вызначае колькасць падпраграм, якія могуць быць даступныя апроч вызначаных у Стандартнай бібліятэцы мовы Сі; яны часта рэалізуюць аналагічную функцыянальнасць са Стандартнай бібліятэкай з рознай ступенню падабенства. Напрыклад, glibc рэалізуе такія функцыі як fork у libc.so, аде перад выклікам бібліятэкі патокаў яднаюцца ў glibc, хоцб гэта заяўлена як асобная бібліятэка з уласным флагам лінкавальніка. Зачастую, такая POSIX-сумяшчальная функцыянальнасць разглядаецца як частка бібліятэкі; адпаведная бібліятэка Сі можа быць ідэнтыфікавана як ANSI ці ISO бібліятэка мовы Сі. РэалізацыіІснуе мноства рэалізацый, што пастаўляюцца як з рознымі аперацыйнымі сістэмамі, так і з кампілятарамі мовы Сі. На BSD сістэмах сістэманя бібліятэка ўбудавана ў аперацыйную сістэму і падтрымліваецца агульным рэпазітарам коду. На большасці сістэм бібліятэка можа быць знойдзена пад імем « Хоць існуе вельмі шмат рэалізацый, вомь невялікі спіс самых папулярных бібліятэк:
Гл. таксамаЗноскі
Дадатковыя крыніцы
|
Portal di Ensiklopedia Dunia