1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] Nate HARDISON: Во програмирање, библиотека е збирка на 2 00:00:09,470 --> 00:00:11,380 поврзани со prewritten код. 3 00:00:11,380 --> 00:00:14,350 Библиотеки како ние, како програмери, делат заеднички и 4 00:00:14,350 --> 00:00:16,930 корисни код едни со други, со различни програми што 5 00:00:16,930 --> 00:00:19,470 пишуваат, па дури и со различни процеси водење на 6 00:00:19,470 --> 00:00:21,380 Истовремено на нашите компјутери. 7 00:00:21,380 --> 00:00:23,000 >> Ајде да истражуваат малку. 8 00:00:23,000 --> 00:00:25,070 Еден од повеќе заеднички функции кои сте веројатно 9 00:00:25,070 --> 00:00:27,500 е користење е printf функцијата. 10 00:00:27,500 --> 00:00:29,820 Сега, printf не е некоја магија функција која беше 11 00:00:29,820 --> 00:00:31,670 хард-кодирани во компјутер - 12 00:00:31,670 --> 00:00:34,320 Напротив, тоа е дел од C Стандард библиотеки, кои се 13 00:00:34,320 --> 00:00:36,080 собирање на функции што доаѓа со 14 00:00:36,080 --> 00:00:38,050 C програмскиот јазик. 15 00:00:38,050 --> 00:00:40,920 Од printf не е вградена во компјутерот, тоа значи дека 16 00:00:40,920 --> 00:00:43,520 имаше некои програмер кој всушност отиде и го напишал 17 00:00:43,520 --> 00:00:46,310 printf функција и во комплет со остатокот од стандард 18 00:00:46,310 --> 00:00:48,880 библиотеки, така што во иднина програмерите нема да мора да 19 00:00:48,880 --> 00:00:50,310 дупликат напор. 20 00:00:50,310 --> 00:00:52,620 И ние сме сигурни благодарен што тоа е случај, бидејќи се провери 21 00:00:52,620 --> 00:00:54,710 колку код всушност е потребно да се спроведе printf. 22 00:00:59,590 --> 00:01:02,860 >> С Стандардна библиотеки, од кои printf е дел, се 23 00:01:02,860 --> 00:01:04,480 една од најважните алатки кои ви се 24 00:01:04,480 --> 00:01:06,770 имаат во справувањето CS50. 25 00:01:06,770 --> 00:01:08,780 Во прилог на влезно-излезните библиотека, каде што 26 00:01:08,780 --> 00:01:11,370 printf животи, постојат еден куп други библиотеки, кои 27 00:01:11,370 --> 00:01:14,230 најверојатно ќе се користи во текот на CS50. 28 00:01:14,230 --> 00:01:16,730 На пример, низата библиотека има функции за 29 00:01:16,730 --> 00:01:20,960 споредуваат C жици, се нивната должина, и concatenate нив. 30 00:01:20,960 --> 00:01:22,410 И математика библиотека ви дава корисни 31 00:01:22,410 --> 00:01:25,062 константи, како пи и e. 32 00:01:25,062 --> 00:01:27,650 Сега, во споредба со стандардните библиотеки на други програмски 33 00:01:27,650 --> 00:01:31,190 јазици, C Стандард библиотеки се навистина мали, 34 00:01:31,190 --> 00:01:34,060 но тие се уште имаат значителна количина на работи. 35 00:01:34,060 --> 00:01:36,370 И тоа не е да се каже дека Стандардна библиотеки се 36 00:01:36,370 --> 00:01:39,020 само C библиотеки, има многу повеќе таму во 37 00:01:39,020 --> 00:01:42,460 свет за да ги користите, вклучувајќи го и CS50 библиотека, 38 00:01:42,460 --> 00:01:45,150 картографија библиотеки со енкрипција и декрипција 39 00:01:45,150 --> 00:01:48,000 функции, библиотеки со функции за да се кодираат и 40 00:01:48,000 --> 00:01:50,970 игра назад видео, и така натаму. 41 00:01:50,970 --> 00:01:53,190 >> Ова нè носи до важна настрана. 42 00:01:53,190 --> 00:01:55,500 Една од основните вештини на инженеринг е да се знае 43 00:01:55,500 --> 00:01:58,090 алатки достапни во вашата Лента со алатки, така што можете да го користите 44 00:01:58,090 --> 00:01:59,850 нив и да се избегне reinventing на тркалото, освен ако 45 00:01:59,850 --> 00:02:01,510 што треба да го стори тоа. 46 00:02:01,510 --> 00:02:04,120 Како програмери, библиотеки се еден од најважните 47 00:02:04,120 --> 00:02:05,520 алатки имаме. 48 00:02:05,520 --> 00:02:08,520 Кога се наоѓате себеси се соочува со задача што чини досадни или 49 00:02:08,520 --> 00:02:11,940 вообичаени, како наоѓање на должината на стрингот Ц, 50 00:02:11,940 --> 00:02:14,020 треба да се запрашате дали тоа би можело да биде случај дека 51 00:02:14,020 --> 00:02:16,520 некој е веќе направено истото порано. 52 00:02:16,520 --> 00:02:17,760 Шансите се дека може да најде некои 53 00:02:17,760 --> 00:02:20,110 помогне во библиотека. 54 00:02:20,110 --> 00:02:23,260 >> Значи во техничка смисла, библиотека е бинарна датотека дека 55 00:02:23,260 --> 00:02:26,210 е произведен од страна на поврзување заедно збирка на 56 00:02:26,210 --> 00:02:28,880 објект датотеки со користење на алатката наречена, можете 57 00:02:28,880 --> 00:02:31,010 претпоставам тоа, линкерот. 58 00:02:31,010 --> 00:02:33,830 Објект додадени фајлови се оние. O датотеки кои ќе добиете кога ќе 59 00:02:33,830 --> 00:02:35,860 компајлирате изворниот код. 60 00:02:35,860 --> 00:02:38,420 Кога програмерите пишуваат библиотеки, тие обично 61 00:02:38,420 --> 00:02:41,560 одвојат своите C код на два вида на датотеки: 62 00:02:41,560 --> 00:02:44,880 насловот датотеки и имплементација датотеки. 63 00:02:44,880 --> 00:02:49,820 А хедер датотека со конвенцијата е дадена. Ж наставката на датотеката, 64 00:02:49,820 --> 00:02:51,940 и содржи код кој изјавува на библиотеката 65 00:02:51,940 --> 00:02:55,120 ресурси кои се достапни за вас да го користите. 66 00:02:55,120 --> 00:02:58,830 Овие ресурси вклучуваат функции, променливи, structs, 67 00:02:58,830 --> 00:03:01,980 тип дефиниции, и така натаму, и заедно, тие се 68 00:03:01,980 --> 00:03:04,620 честопати се нарекува интерфејс. 69 00:03:04,620 --> 00:03:07,280 Всушност, ако сте некогаш се прашувате што е во библиотека, 70 00:03:07,280 --> 00:03:09,580 насловот датотеки се место да се погледне. 71 00:03:09,580 --> 00:03:14,030 >> На пример, можете да се повлече до usr / вклучува / stdio.h и проверете 72 00:03:14,030 --> 00:03:16,210 се што некогаш сте сакале да знаете за 73 00:03:16,210 --> 00:03:18,570 стандард IO библиотека. 74 00:03:18,570 --> 00:03:20,610 Има многу работи тука, и тоа може да потрае малку 75 00:03:20,610 --> 00:03:22,420 време да одам преку. 76 00:03:22,420 --> 00:03:25,840 Сепак, заедно со Google и manpages, ова е 77 00:03:25,840 --> 00:03:28,060 место да одат ако се прашувате како стандард I / O 78 00:03:28,060 --> 00:03:30,460 библиотека функции работат. 79 00:03:30,460 --> 00:03:33,910 Значи една клучна работа е да се напомене тука, сепак, е дека насловот датотеки 80 00:03:33,910 --> 00:03:36,740 обично не вклучуваат функција дефиниции - 81 00:03:36,740 --> 00:03:40,020 тоа е, вистинската функција имплементации. 82 00:03:40,020 --> 00:03:42,470 Ова е илустрација на важен компјутерски науки 83 00:03:42,470 --> 00:03:45,700 принцип наречен информации крие, исто така се наведени во 84 00:03:45,700 --> 00:03:48,960 пати колку што е херметичка. 85 00:03:48,960 --> 00:03:52,630 >> Како корисник или на клиентот на библиотеката, не треба да 86 00:03:52,630 --> 00:03:54,230 знаат за internals на библиотеката во 87 00:03:54,230 --> 00:03:55,380 со цел да го користам. 88 00:03:55,380 --> 00:03:57,800 Сеќавам гледајќи printf само малку пред? 89 00:03:57,800 --> 00:04:00,275 Те видел вистинскиот код и пред тоа? 90 00:04:00,275 --> 00:04:02,535 Па, претпоставувам дека не сте, иако можеби 91 00:04:02,535 --> 00:04:05,090 се користат printf тони пати. 92 00:04:05,090 --> 00:04:08,110 Сите ти мораше да се знае е функција декларација присутни 93 00:04:08,110 --> 00:04:10,940 во stdio.h хедер датотека. 94 00:04:10,940 --> 00:04:14,010 Како и да е, во корист на добри информации крие е дека 95 00:04:14,010 --> 00:04:16,820 и програми за да ви пишувам се изолирани од било какви промени во 96 00:04:16,820 --> 00:04:20,209 кодот на имплементација на библиотечно работење. 97 00:04:20,209 --> 00:04:22,880 Ако спроведувањето на printf промени, немате 98 00:04:22,880 --> 00:04:26,310 да одат и промена на сите ваши програми кои ги користат printf. 99 00:04:26,310 --> 00:04:28,450 >> Значи каде имплементација одиме? 100 00:04:28,450 --> 00:04:31,020 Па, повторно, со конвенцијата, имплементацијата оди во 101 00:04:31,020 --> 00:04:34,310 датотека со. в наставката на датотеката. 102 00:04:34,310 --> 00:04:36,820 Обично, насловот датотеки и имплементација датотеки одат рака 103 00:04:36,820 --> 00:04:39,380 во рака, па ако сте прогласена еден куп на нови стрингови 104 00:04:39,380 --> 00:04:42,950 функции во mystring.h, тогаш ќе се дефинираат сите 105 00:04:42,950 --> 00:04:46,960 тие функции во mystring. в. 106 00:04:46,960 --> 00:04:49,230 Па тогаш насловот и имплементација датотеки се потоа 107 00:04:49,230 --> 00:04:52,230 Составувач, создавајќи објект датотеки, кои потоа се поврзани 108 00:04:52,230 --> 00:04:55,360 заедно за да се произведе бинарни библиотека датотека. 109 00:04:55,360 --> 00:04:58,520 Во библиотеката писател, тогаш ќе брод на бинарна датотека заедно 110 00:04:58,520 --> 00:05:00,720 со насловот датотеки за програмерите кои сакаат да го користат 111 00:05:00,720 --> 00:05:02,280 библиотеката. 112 00:05:02,280 --> 00:05:04,640 Во овој момент,. В имплементација датотеки не се 113 00:05:04,640 --> 00:05:07,840 потребно, освен да го прекомпајлирате библиотека од нула, па 114 00:05:07,840 --> 00:05:10,270 тие се често изоставени. 115 00:05:10,270 --> 00:05:13,670 >> За да ја користите библиотеката Ц, што треба да направите две работи. 116 00:05:13,670 --> 00:05:16,890 Прво, можете # мора да ги содржи насловот датотеки на библиотеката и 117 00:05:16,890 --> 00:05:18,700 изворниот код датотека каде што сакате да ја користите 118 00:05:18,700 --> 00:05:20,530 на библиотеката код. 119 00:05:20,530 --> 00:05:23,200 Ова информира компајлер на сите декларации за 120 00:05:23,200 --> 00:05:26,890 функции, променливи, structs, и така натаму, присутна во 121 00:05:26,890 --> 00:05:30,510 насловот датотеки, така што на компајлерот може еден, се осигура дека 122 00:05:30,510 --> 00:05:33,280 ти си користење на ресурсите на библиотеката во соодветен начин, 123 00:05:33,280 --> 00:05:37,120 и две, генерира соодветни асемблерски код. 124 00:05:37,120 --> 00:05:38,910 Во зависност од тоа каде се насловот датотеки на библиотеката 125 00:05:38,910 --> 00:05:42,720 наоѓа, на # Include синтакса варира. 126 00:05:42,720 --> 00:05:44,880 Ако насловот датотеки се наоѓаат во системот 127 00:05:44,880 --> 00:05:46,690 стандардно вклучуваат директориум - 128 00:05:46,690 --> 00:05:48,780 обично, usr/include-- 129 00:05:48,780 --> 00:05:52,200 тогаш аглести загради синтакса се користи, како во # include 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 Меѓутоа, ако насловот датотеки се наоѓаат во иста 132 00:05:59,540 --> 00:06:02,960 директориумот како свој код, наводници синтаксата е 133 00:06:02,960 --> 00:06:04,870 користи, како во # Include "mylib.h". 134 00:06:08,630 --> 00:06:11,220 >> Втората работа што треба да направите е да се поврзат во бинарен 135 00:06:11,220 --> 00:06:13,760 библиотека датотеката кога ќе компајлирате вашиот код. 136 00:06:13,760 --> 00:06:15,810 Ова е супер важен чекор. 137 00:06:15,810 --> 00:06:17,540 Запомни нашето претходно дискусија за тоа како наслов 138 00:06:17,540 --> 00:06:20,200 додадени фајлови: не содржат имплементација код? 139 00:06:20,200 --> 00:06:22,200 Ако го заборавите овој чекор, ќе добиете грешки за 140 00:06:22,200 --> 00:06:24,990 недефиниран симболи референцира во вашиот код. 141 00:06:24,990 --> 00:06:29,580 За да се реши ова, користете ја-l знаме следеше веднаш 142 00:06:29,580 --> 00:06:32,320 без простор со името на библиотеката. 143 00:06:32,320 --> 00:06:35,410 На многу системи, вклучувајќи го апаратот, C Стандард 144 00:06:35,410 --> 00:06:38,350 Библиотеки автоматски се поврзани за вас. 145 00:06:38,350 --> 00:06:41,700 Сепак, математика библиотека понекогаш комплет одделно 146 00:06:41,700 --> 00:06:44,600 и можеби ќе треба да се поврзе со-филмот. 147 00:06:44,600 --> 00:06:47,760 На апаратот, ние се грижиме за тоа за вас, и ние исто така 148 00:06:47,760 --> 00:06:52,170 поврзат CS50 библиотека со-lcs50. 149 00:06:52,170 --> 00:06:54,540 Можете да го видите сето ова на уредот кога ќе ја стартувате направи. 150 00:06:57,620 --> 00:06:59,130 >> Сега треба да имаат знаење треба да користите 151 00:06:59,130 --> 00:07:02,150 библиотеки во В Забавувајте се истражуваат. 152 00:07:02,150 --> 00:07:05,880 Моето име е Нејт Hardison, и ова е CS50.