1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] NATE Hardison: V programování, knihovna je sbírka 2 00:00:09,470 --> 00:00:11,380 související prewritten kód. 3 00:00:11,380 --> 00:00:14,350 Knihovny jsou, jak jsme jako programátoři, sdílet společné a 4 00:00:14,350 --> 00:00:16,930 užitečné kód s sebou, s různými programy jsme 5 00:00:16,930 --> 00:00:19,470 psát, a dokonce s různými procesy běžící na 6 00:00:19,470 --> 00:00:21,380 stejný čas na našich počítačích. 7 00:00:21,380 --> 00:00:23,000 >> Pojďme prozkoumat trochu. 8 00:00:23,000 --> 00:00:25,070 Jeden z více společných funkcí, které jste pravděpodobně 9 00:00:25,070 --> 00:00:27,500 Používám je printf funkce. 10 00:00:27,500 --> 00:00:29,820 Nyní, printf není nějaký magie funkce, která je již 11 00:00:29,820 --> 00:00:31,670 pevně do počítače - 12 00:00:31,670 --> 00:00:34,320 spíše, že je to část C knihoven Standard, které jsou 13 00:00:34,320 --> 00:00:36,080 sbírka funkcí, které přichází s 14 00:00:36,080 --> 00:00:38,050 C programovací jazyk. 15 00:00:38,050 --> 00:00:40,920 Vzhledem k tomu, printf není zabudována do počítače, který znamená, že 16 00:00:40,920 --> 00:00:43,520 tam byla nějaká programátor, který skutečně šel a napsal 17 00:00:43,520 --> 00:00:46,310 printf funkce a svázaný ji se zbytkem normy 18 00:00:46,310 --> 00:00:48,880 knihovny tak, aby budoucí programátoři by nemusel 19 00:00:48,880 --> 00:00:50,310 duplicitní úsilí. 20 00:00:50,310 --> 00:00:52,620 A jsme si jisti, vděčný, že je to tento případ, protože zkontrolujte 21 00:00:52,620 --> 00:00:54,710 , kolik kód to vlastně trvá realizovat printf. 22 00:00:59,590 --> 00:01:02,860 >> Symbol c Standardní knihovny, z nichž printf je součástí, jsou 23 00:01:02,860 --> 00:01:04,480 jedním z nejdůležitějších nástrojů, které 24 00:01:04,480 --> 00:01:06,770 mají v boji proti CS50. 25 00:01:06,770 --> 00:01:08,780 Kromě vstupů a výstupů knihovny, kde 26 00:01:08,780 --> 00:01:11,370 printf životy, existuje spoustu dalších knihoven, které 27 00:01:11,370 --> 00:01:14,230 budete pravděpodobně používat přes běh CS50. 28 00:01:14,230 --> 00:01:16,730 Například, řetězec knihovna funkcí 29 00:01:16,730 --> 00:01:20,960 porovnání C řetězců, získat jejich délku, a zřetězit je. 30 00:01:20,960 --> 00:01:22,410 A matematická knihovna vám dává užitečné 31 00:01:22,410 --> 00:01:25,062 konstanty, jako je pí a e. 32 00:01:25,062 --> 00:01:27,650 Nyní, ve srovnání se standardními knihovnami jiných programů 33 00:01:27,650 --> 00:01:31,190 jazyce, přičemž C Standardní knihovny jsou opravdu malé, 34 00:01:31,190 --> 00:01:34,060 ale stále mají velké množství věcí. 35 00:01:34,060 --> 00:01:36,370 A to neznamená, že standardní knihovny jsou 36 00:01:36,370 --> 00:01:39,020 pouze C knihovny, existuje mnoho víc venku v 37 00:01:39,020 --> 00:01:42,460 svět pro vás k použití, včetně CS50 knihovny, 38 00:01:42,460 --> 00:01:45,150 kartografie knihovny s šifrování a dešifrování 39 00:01:45,150 --> 00:01:48,000 funkce, knihovny s funkcemi pro enkódování a 40 00:01:48,000 --> 00:01:50,970 přehrávat video, a tak dále. 41 00:01:50,970 --> 00:01:53,190 >> To nás přivádí k důležitým stranou. 42 00:01:53,190 --> 00:01:55,500 Jednou ze základních dovedností inženýrství je s vědomím, že 43 00:01:55,500 --> 00:01:58,090 dostupné nástroje v panelu nástrojů, takže můžete použít 44 00:01:58,090 --> 00:01:59,850 je a vyhnout objevování Ameriky, pokud 45 00:01:59,850 --> 00:02:01,510 musíte tak učinit. 46 00:02:01,510 --> 00:02:04,120 Jako programátoři, knihovny jsou jedním z nejdůležitějších 47 00:02:04,120 --> 00:02:05,520 nástroje, které mají. 48 00:02:05,520 --> 00:02:08,520 Když se ocitnete tváří v tvář úkolu, který se zdá nudné, nebo 49 00:02:08,520 --> 00:02:11,940 samozřejmostí, jako když se délka řetězce C, vy 50 00:02:11,940 --> 00:02:14,020 zeptejte se sami sebe, zda to může být případ, že 51 00:02:14,020 --> 00:02:16,520 někdo už udělal stejnou věc před. 52 00:02:16,520 --> 00:02:17,760 Šance je, že byste mohli najít některé 53 00:02:17,760 --> 00:02:20,110 pomoc v knihovně. 54 00:02:20,110 --> 00:02:23,260 >> Takže z technického hlediska, knihovna je binární soubor, který 55 00:02:23,260 --> 00:02:26,210 byla vyrobena propojením sbírku 56 00:02:26,210 --> 00:02:28,880 objektové soubory pomocí nástroje nazývá, si 57 00:02:28,880 --> 00:02:31,010 Uhodli jste, linker. 58 00:02:31,010 --> 00:02:33,830 Objekt soubory jsou. O soubory, které dostanete, když budete 59 00:02:33,830 --> 00:02:35,860 kompilaci C zdrojový kód. 60 00:02:35,860 --> 00:02:38,420 Když programátoři píší knihovny, které obvykle 61 00:02:38,420 --> 00:02:41,560 oddělit jejich kód v C do dvou typů souborů: 62 00:02:41,560 --> 00:02:44,880 hlavičkové soubory a implementace soubory. 63 00:02:44,880 --> 00:02:49,820 Hlavičkový soubor konvencí je dána. H příponu souboru, 64 00:02:49,820 --> 00:02:51,940 a obsahuje kód, který prohlašuje, knihovna je 65 00:02:51,940 --> 00:02:55,120 zdroje, které jsou k dispozici pro vás k použití. 66 00:02:55,120 --> 00:02:58,830 Tyto zdroje zahrnují funkce, proměnné, struktur, 67 00:02:58,830 --> 00:03:01,980 typ definice, a tak dále, a společně, jsou 68 00:03:01,980 --> 00:03:04,620 obyčejně odkazoval se na jako rozhraní. 69 00:03:04,620 --> 00:03:07,280 Ve skutečnosti, pokud jste někdy přemýšlel, co je v knihovně, 70 00:03:07,280 --> 00:03:09,580 hlavičkové soubory jsou místem, kde hledat. 71 00:03:09,580 --> 00:03:14,030 >> Například, můžete vytáhnout až usr / include / stdio.h a zkontrolujte 72 00:03:14,030 --> 00:03:16,210 si vše co jste kdy chtěli vědět o 73 00:03:16,210 --> 00:03:18,570 standardní io knihovny. 74 00:03:18,570 --> 00:03:20,610 Je tu spousta věcí, v tu, a to může trvat trochu 75 00:03:20,610 --> 00:03:22,420 čas prokousat. 76 00:03:22,420 --> 00:03:25,840 Nicméně, spolu s firmou Google a manuálové stránky, to je 77 00:03:25,840 --> 00:03:28,060 místo, kam jít, pokud jste zvědaví, jak standardní I / O 78 00:03:28,060 --> 00:03:30,460 knihovní funkce pracují. 79 00:03:30,460 --> 00:03:33,910 Takže jeden klíč věc k poznámce, však je, že hlavičkové soubory 80 00:03:33,910 --> 00:03:36,740 obvykle nezahrnují definice funkcí - 81 00:03:36,740 --> 00:03:40,020 to znamená, že skutečné funkce implementace. 82 00:03:40,020 --> 00:03:42,470 To je ilustrace významného informatiky 83 00:03:42,470 --> 00:03:45,700 Princip tzv. skrývání informací, také odkazoval se na v 84 00:03:45,700 --> 00:03:48,960 krát zapouzdření. 85 00:03:48,960 --> 00:03:52,630 >> Jako uživatel nebo klient o knihovny, budete nemusíte 86 00:03:52,630 --> 00:03:54,230 vědět o vnitřku knihovny v 87 00:03:54,230 --> 00:03:55,380 Aby bylo možné použít ji. 88 00:03:55,380 --> 00:03:57,800 Nezapomeňte vidět printf jen trochu před? 89 00:03:57,800 --> 00:04:00,275 Kdyby jste někdy viděli skutečný kód před? 90 00:04:00,275 --> 00:04:02,535 No, předpokládám, že nemáte, i když si možná 91 00:04:02,535 --> 00:04:05,090 byly použity printf tun časů. 92 00:04:05,090 --> 00:04:08,110 Vše, co musel vědět, byla funkce prohlášení současné 93 00:04:08,110 --> 00:04:10,940 v stdio.h záhlaví souboru. 94 00:04:10,940 --> 00:04:14,010 Každopádně, výhoda dobrého skrývání informací je to, že 95 00:04:14,010 --> 00:04:16,820 a programy, které napsat jsou izolovány od jakýchkoli změn v 96 00:04:16,820 --> 00:04:20,209 kód implementace knihovny funkcí. 97 00:04:20,209 --> 00:04:22,880 Pokud implementace printf změn, nemáte 98 00:04:22,880 --> 00:04:26,310 jít a změnit všechny programy, které používají printf. 99 00:04:26,310 --> 00:04:28,450 >> Takže tam, kde se realizace jít? 100 00:04:28,450 --> 00:04:31,020 No, opět, podle konvence, implementace jde do 101 00:04:31,020 --> 00:04:34,310 soubor s příponou. souboru c. 102 00:04:34,310 --> 00:04:36,820 Obvykle, hlavičkové soubory a implementace soubory jdou ruku 103 00:04:36,820 --> 00:04:39,380 v ruce, takže pokud jste prohlásil spoustu nového řetězce 104 00:04:39,380 --> 00:04:42,950 funkce v mystring.h, pak budete definovat všechny 105 00:04:42,950 --> 00:04:46,960 tyto funkce v MyString. c.. 106 00:04:46,960 --> 00:04:49,230 Takže hlavičkové a realizace soubory jsou pak 107 00:04:49,230 --> 00:04:52,230 sestaven, vytvářet objektové soubory, které jsou pak spojeny 108 00:04:52,230 --> 00:04:55,360 společně produkovat binární soubor knihovny. 109 00:04:55,360 --> 00:04:58,520 Knihovna spisovatel pak loď binární soubor podél 110 00:04:58,520 --> 00:05:00,720 s hlavičkových souborů na programátory, kteří chtějí využít 111 00:05:00,720 --> 00:05:02,280 knihovna. 112 00:05:02,280 --> 00:05:04,640 V tomto bodě se. C Provedení soubory nejsou 113 00:05:04,640 --> 00:05:07,840 potřeba, s výjimkou překompilovat knihovnu od nuly, takže 114 00:05:07,840 --> 00:05:10,270 oni často vynechává. 115 00:05:10,270 --> 00:05:13,670 >> Chcete-li použít knihovnu C, musíte udělat dvě věci. 116 00:05:13,670 --> 00:05:16,890 Za prvé, musíte # include knihovny hlavičkové soubory a 117 00:05:16,890 --> 00:05:18,700 Zdrojový kód souboru, kde chcete použít 118 00:05:18,700 --> 00:05:20,530 knihovny kódu. 119 00:05:20,530 --> 00:05:23,200 To informuje kompilátor všech prohlášení o 120 00:05:23,200 --> 00:05:26,890 funkce, proměnné, struktur, et cetera, přítomné v 121 00:05:26,890 --> 00:05:30,510 hlavičkové soubory, takže kompilátor může jeden, se ujistili, že 122 00:05:30,510 --> 00:05:33,280 jste pomocí knihovny zdroje správným způsobem, 123 00:05:33,280 --> 00:05:37,120 a za druhé, generovat odpovídající kód assembleru. 124 00:05:37,120 --> 00:05:38,910 V závislosti na tom, kde se knihovna je hlavičkové soubory jsou 125 00:05:38,910 --> 00:05:42,720 nachází, # include syntaxe se liší. 126 00:05:42,720 --> 00:05:44,880 Pokud hlavičkové soubory jsou umístěny v systému je 127 00:05:44,880 --> 00:05:46,690 Výchozí obsahovat adresář - 128 00:05:46,690 --> 00:05:48,780 typicky, usr/include-- 129 00:05:48,780 --> 00:05:52,200 pak úhel závorky syntaxe je použita, jak v # zahrnují 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 Nicméně, v případě, že hlavičkové soubory jsou umístěny ve stejné 132 00:05:59,540 --> 00:06:02,960 adresář jako vlastní kód, dvojité citace syntaxe je 133 00:06:02,960 --> 00:06:04,870 používán, jak v # zahrnují "mylib.h". 134 00:06:08,630 --> 00:06:11,220 >> Druhá věc, kterou musíte udělat, je spojit v binárním 135 00:06:11,220 --> 00:06:13,760 Soubor knihovny při kompilaci kódu. 136 00:06:13,760 --> 00:06:15,810 To je super důležitý krok. 137 00:06:15,810 --> 00:06:17,540 Pamatuješ se na naše dřívější diskusi o tom, jak hlavička 138 00:06:17,540 --> 00:06:20,200 Soubory neobsahují implementace kód? 139 00:06:20,200 --> 00:06:22,200 Pokud jste zapomněl tento krok, budete se chyby o 140 00:06:22,200 --> 00:06:24,990 nedefinované symboly uvedenou v kódu. 141 00:06:24,990 --> 00:06:29,580 K vyřešení tohoto problému, použijte-l bezprostředně následuje 142 00:06:29,580 --> 00:06:32,320 bez prostoru podle názvu knihovny. 143 00:06:32,320 --> 00:06:35,410 Na mnoha systémech, včetně zařízení, C Standardní 144 00:06:35,410 --> 00:06:38,350 Knihovny jsou automaticky propojeny pro vás. 145 00:06:38,350 --> 00:06:41,700 Nicméně, je matematická knihovna někdy svázaný samostatně 146 00:06:41,700 --> 00:06:44,600 a mohla by být spojena s-lm. 147 00:06:44,600 --> 00:06:47,760 Na zařízení, my se postaráme o to pro vás, a také 148 00:06:47,760 --> 00:06:52,170 odkaz na CS50 knihovnu-lcs50. 149 00:06:52,170 --> 00:06:54,540 Můžete vidět vše na přístroji při spuštění provést. 150 00:06:57,620 --> 00:06:59,130 >> Nyní byste měli mít znalosti, které potřebujete k používání 151 00:06:59,130 --> 00:07:02,150 knihovny v C. Dobře se bavte. 152 00:07:02,150 --> 00:07:05,880 Mé jméno je Nate Hardison, a to je CS50.