[Powered by Google Translate] Nate HARDISON: Во програмирање, библиотека е збирка на поврзани со prewritten код. Библиотеки како ние, како програмери, делат заеднички и корисни код едни со други, со различни програми што пишуваат, па дури и со различни процеси водење на Истовремено на нашите компјутери. Ајде да истражуваат малку. Еден од повеќе заеднички функции кои сте веројатно е користење е printf функцијата. Сега, printf не е некоја магија функција која беше хард-кодирани во компјутер - Напротив, тоа е дел од C Стандард библиотеки, кои се собирање на функции што доаѓа со C програмскиот јазик. Од printf не е вградена во компјутерот, тоа значи дека имаше некои програмер кој всушност отиде и го напишал printf функција и во комплет со остатокот од стандард библиотеки, така што во иднина програмерите нема да мора да дупликат напор. И ние сме сигурни благодарен што тоа е случај, бидејќи се провери колку код всушност е потребно да се спроведе printf. С Стандардна библиотеки, од кои printf е дел, се една од најважните алатки кои ви се имаат во справувањето CS50. Во прилог на влезно-излезните библиотека, каде што printf животи, постојат еден куп други библиотеки, кои најверојатно ќе се користи во текот на CS50. На пример, низата библиотека има функции за споредуваат C жици, се нивната должина, и concatenate нив. И математика библиотека ви дава корисни константи, како пи и e. Сега, во споредба со стандардните библиотеки на други програмски јазици, C Стандард библиотеки се навистина мали, но тие се уште имаат значителна количина на работи. И тоа не е да се каже дека Стандардна библиотеки се само C библиотеки, има многу повеќе таму во свет за да ги користите, вклучувајќи го и CS50 библиотека, картографија библиотеки со енкрипција и декрипција функции, библиотеки со функции за да се кодираат и игра назад видео, и така натаму. Ова нè носи до важна настрана. Една од основните вештини на инженеринг е да се знае алатки достапни во вашата Лента со алатки, така што можете да го користите нив и да се избегне reinventing на тркалото, освен ако што треба да го стори тоа. Како програмери, библиотеки се еден од најважните алатки имаме. Кога се наоѓате себеси се соочува со задача што чини досадни или вообичаени, како наоѓање на должината на стрингот Ц, треба да се запрашате дали тоа би можело да биде случај дека некој е веќе направено истото порано. Шансите се дека може да најде некои помогне во библиотека. Значи во техничка смисла, библиотека е бинарна датотека дека е произведен од страна на поврзување заедно збирка на објект датотеки со користење на алатката наречена, можете претпоставам тоа, линкерот. Објект додадени фајлови се оние. O датотеки кои ќе добиете кога ќе компајлирате изворниот код. Кога програмерите пишуваат библиотеки, тие обично одвојат своите C код на два вида на датотеки: насловот датотеки и имплементација датотеки. А хедер датотека со конвенцијата е дадена. Ж наставката на датотеката, и содржи код кој изјавува на библиотеката ресурси кои се достапни за вас да го користите. Овие ресурси вклучуваат функции, променливи, structs, тип дефиниции, и така натаму, и заедно, тие се честопати се нарекува интерфејс. Всушност, ако сте некогаш се прашувате што е во библиотека, насловот датотеки се место да се погледне. На пример, можете да се повлече до usr / вклучува / stdio.h и проверете се што некогаш сте сакале да знаете за стандард IO библиотека. Има многу работи тука, и тоа може да потрае малку време да одам преку. Сепак, заедно со Google и manpages, ова е место да одат ако се прашувате како стандард I / O библиотека функции работат. Значи една клучна работа е да се напомене тука, сепак, е дека насловот датотеки обично не вклучуваат функција дефиниции - тоа е, вистинската функција имплементации. Ова е илустрација на важен компјутерски науки принцип наречен информации крие, исто така се наведени во пати колку што е херметичка. Како корисник или на клиентот на библиотеката, не треба да знаат за internals на библиотеката во со цел да го користам. Сеќавам гледајќи printf само малку пред? Те видел вистинскиот код и пред тоа? Па, претпоставувам дека не сте, иако можеби се користат printf тони пати. Сите ти мораше да се знае е функција декларација присутни во stdio.h хедер датотека. Како и да е, во корист на добри информации крие е дека и програми за да ви пишувам се изолирани од било какви промени во кодот на имплементација на библиотечно работење. Ако спроведувањето на printf промени, немате да одат и промена на сите ваши програми кои ги користат printf. Значи каде имплементација одиме? Па, повторно, со конвенцијата, имплементацијата оди во датотека со. в наставката на датотеката. Обично, насловот датотеки и имплементација датотеки одат рака во рака, па ако сте прогласена еден куп на нови стрингови функции во mystring.h, тогаш ќе се дефинираат сите тие функции во mystring. в. Па тогаш насловот и имплементација датотеки се потоа Составувач, создавајќи објект датотеки, кои потоа се поврзани заедно за да се произведе бинарни библиотека датотека. Во библиотеката писател, тогаш ќе брод на бинарна датотека заедно со насловот датотеки за програмерите кои сакаат да го користат библиотеката. Во овој момент,. В имплементација датотеки не се потребно, освен да го прекомпајлирате библиотека од нула, па тие се често изоставени. За да ја користите библиотеката Ц, што треба да направите две работи. Прво, можете # мора да ги содржи насловот датотеки на библиотеката и изворниот код датотека каде што сакате да ја користите на библиотеката код. Ова информира компајлер на сите декларации за функции, променливи, structs, и така натаму, присутна во насловот датотеки, така што на компајлерот може еден, се осигура дека ти си користење на ресурсите на библиотеката во соодветен начин, и две, генерира соодветни асемблерски код. Во зависност од тоа каде се насловот датотеки на библиотеката наоѓа, на # Include синтакса варира. Ако насловот датотеки се наоѓаат во системот стандардно вклучуваат директориум - обично, usr/include-- тогаш аглести загради синтакса се користи, како во # include . Меѓутоа, ако насловот датотеки се наоѓаат во иста директориумот како свој код, наводници синтаксата е користи, како во # Include "mylib.h". Втората работа што треба да направите е да се поврзат во бинарен библиотека датотеката кога ќе компајлирате вашиот код. Ова е супер важен чекор. Запомни нашето претходно дискусија за тоа како наслов додадени фајлови: не содржат имплементација код? Ако го заборавите овој чекор, ќе добиете грешки за недефиниран симболи референцира во вашиот код. За да се реши ова, користете ја-l знаме следеше веднаш без простор со името на библиотеката. На многу системи, вклучувајќи го апаратот, C Стандард Библиотеки автоматски се поврзани за вас. Сепак, математика библиотека понекогаш комплет одделно и можеби ќе треба да се поврзе со-филмот. На апаратот, ние се грижиме за тоа за вас, и ние исто така поврзат CS50 библиотека со-lcs50. Можете да го видите сето ова на уредот кога ќе ја стартувате направи. Сега треба да имаат знаење треба да користите библиотеки во В Забавувајте се истражуваат. Моето име е Нејт Hardison, и ова е CS50.