1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] Nate Hardison: V programovanie, knižnica je zbierka 2 00:00:09,470 --> 00:00:11,380 súvisiace prewritten kód. 3 00:00:11,380 --> 00:00:14,350 Knižnice sú, ako sme ako programátori, zdieľať spoločné a 4 00:00:14,350 --> 00:00:16,930 užitočné kód so sebou, s rôznymi programami sme 5 00:00:16,930 --> 00:00:19,470 písať, a dokonca s rôznymi procesy bežiace na 6 00:00:19,470 --> 00:00:21,380 rovnaký čas na našich počítačoch. 7 00:00:21,380 --> 00:00:23,000 >> Poďme preskúmať trochu. 8 00:00:23,000 --> 00:00:25,070 Jeden z viacerých spoločných funkcií, ktoré ste pravdepodobne 9 00:00:25,070 --> 00:00:27,500 Používam je printf funkcie. 10 00:00:27,500 --> 00:00:29,820 Teraz, printf nie je nejaký mágie funkcia, ktorá je už 11 00:00:29,820 --> 00:00:31,670 pevne do počítača - 12 00:00:31,670 --> 00:00:34,320 skôr, že je to časť C knižníc Standard, ktoré sú 13 00:00:34,320 --> 00:00:36,080 zbierka funkcií, ktoré prichádza s 14 00:00:36,080 --> 00:00:38,050 C programovací jazyk. 15 00:00:38,050 --> 00:00:40,920 Vzhľadom k tomu, printf nie je zabudovaná do počítača, ktorý znamená, že 16 00:00:40,920 --> 00:00:43,520 tam bola nejaká programátor, ktorý skutočne išiel a napísal 17 00:00:43,520 --> 00:00:46,310 printf funkcie a zviazaný ju so zvyškom normy 18 00:00:46,310 --> 00:00:48,880 knižnice tak, aby budúce programátori by nemusel 19 00:00:48,880 --> 00:00:50,310 duplicitné úsilie. 20 00:00:50,310 --> 00:00:52,620 A sme si istí, vďačný, že je to tento prípad, pretože skontrolujte 21 00:00:52,620 --> 00:00:54,710 , Koľko kód to vlastne trvá realizovať printf. 22 00:00:59,590 --> 00:01:02,860 >> Symbol c Štandardné knižnice, z ktorých printf je súčasťou, sú 23 00:01:02,860 --> 00:01:04,480 jedným z najdôležitejších nástrojov, ktoré 24 00:01:04,480 --> 00:01:06,770 majú v boji proti CS50. 25 00:01:06,770 --> 00:01:08,780 Okrem vstupov a výstupov knižnice, kde 26 00:01:08,780 --> 00:01:11,370 printf životy, existuje množstvo ďalších knižníc, ktoré 27 00:01:11,370 --> 00:01:14,230 budete pravdepodobne používať cez beh CS50. 28 00:01:14,230 --> 00:01:16,730 Napríklad, reťazec knižnica funkcií 29 00:01:16,730 --> 00:01:20,960 nákupný C reťazcov, získať ich dĺžku, a zreťaziť je. 30 00:01:20,960 --> 00:01:22,410 A matematická knižnica vám dáva užitočné 31 00:01:22,410 --> 00:01:25,062 konštanty, ako je pani a e 32 00:01:25,062 --> 00:01:27,650 Teraz, v porovnaní so štandardnými knižnicami iných programov 33 00:01:27,650 --> 00:01:31,190 jazyku, pričom C Štandardné knižnice sú naozaj malé, 34 00:01:31,190 --> 00:01:34,060 ale stále majú veľké množstvo vecí. 35 00:01:34,060 --> 00:01:36,370 A to neznamená, že štandardné knižnice sú 36 00:01:36,370 --> 00:01:39,020 iba C knižnice, existuje mnoho viac vonku v 37 00:01:39,020 --> 00:01:42,460 svet pre vás na použitie, vrátane CS50 knižnice, 38 00:01:42,460 --> 00:01:45,150 kartografie knižnice s šifrovanie a dešifrovanie 39 00:01:45,150 --> 00:01:48,000 funkcie, knižnice s funkciami pre kódovanie a 40 00:01:48,000 --> 00:01:50,970 prehrávať video, a tak ďalej. 41 00:01:50,970 --> 00:01:53,190 >> To nás privádza k dôležitým stranou. 42 00:01:53,190 --> 00:01:55,500 Jednou zo základných zručností inžinierstva je s vedomím, že 43 00:01:55,500 --> 00:01:58,090 dostupné nástroje v paneli nástrojov, takže môžete použiť 44 00:01:58,090 --> 00:01:59,850 je a vyhnúť objavovanie Ameriky, ak 45 00:01:59,850 --> 00:02:01,510 musíte tak urobiť. 46 00:02:01,510 --> 00:02:04,120 Ako programátori, knižnice sú jedným z najdôležitejších 47 00:02:04,120 --> 00:02:05,520 nástroje, ktoré majú. 48 00:02:05,520 --> 00:02:08,520 Keď sa ocitnete tvárou v tvár úlohy, ktorá sa zdá nudné, alebo 49 00:02:08,520 --> 00:02:11,940 samozrejmosťou, ako keď sa dĺžka reťazca C, vy 50 00:02:11,940 --> 00:02:14,020 Spýtajte sa sami seba, či by to mohlo byť v prípade, že 51 00:02:14,020 --> 00:02:16,520 niekto už urobil rovnakú vec pred. 52 00:02:16,520 --> 00:02:17,760 Šanca je, že by ste mohli nájsť niektoré 53 00:02:17,760 --> 00:02:20,110 pomoc v knižnici. 54 00:02:20,110 --> 00:02:23,260 >> Takže z technického hľadiska, knižnica je binárny súbor, ktorý 55 00:02:23,260 --> 00:02:26,210 bola vyrobená prepojením zbierku 56 00:02:26,210 --> 00:02:28,880 objektové súbory pomocou nástroja nazýva, si 57 00:02:28,880 --> 00:02:31,010 Uhádli ste, je linker. 58 00:02:31,010 --> 00:02:33,830 Objekt súbory sú. O súbory, ktoré dostanete, keď budete 59 00:02:33,830 --> 00:02:35,860 kompiláciu C zdrojový kód. 60 00:02:35,860 --> 00:02:38,420 Keď programátori píšu knižnice, ktoré zvyčajne 61 00:02:38,420 --> 00:02:41,560 oddeliť ich kód v C do dvoch typov súborov: 62 00:02:41,560 --> 00:02:44,880 hlavičkové súbory a implementácia súbory. 63 00:02:44,880 --> 00:02:49,820 Hlavičkový súbor konvencií je daná. H príponu súboru, 64 00:02:49,820 --> 00:02:51,940 a obsahuje kód, ktorý prehlasuje, knižnica je 65 00:02:51,940 --> 00:02:55,120 zdroje, ktoré sú k dispozícii pre vás na použitie. 66 00:02:55,120 --> 00:02:58,830 Tieto zdroje zahŕňajú funkcie, premenné, štruktúr, 67 00:02:58,830 --> 00:03:01,980 typ definície, a tak ďalej, a spoločne, sú 68 00:03:01,980 --> 00:03:04,620 obyčajne odvolával sa na ako rozhranie. 69 00:03:04,620 --> 00:03:07,280 V skutočnosti, ak ste niekedy premýšľal, čo je v knižnici, 70 00:03:07,280 --> 00:03:09,580 hlavičkové súbory sú miestom, kde hľadať. 71 00:03:09,580 --> 00:03:14,030 >> Napríklad, môžete vytiahnuť až usr / include / stdio.h a skontrolujte 72 00:03:14,030 --> 00:03:16,210 si všetko čo ste kedy chceli vedieť o 73 00:03:16,210 --> 00:03:18,570 štandardné aj o knižnice. 74 00:03:18,570 --> 00:03:20,610 Je tu veľa vecí, v tú, a to môže trvať trochu 75 00:03:20,610 --> 00:03:22,420 čas prehrýzť. 76 00:03:22,420 --> 00:03:25,840 Avšak, spolu s firmou Google a manuálové stránky, to je 77 00:03:25,840 --> 00:03:28,060 miesto, kam ísť, ak ste zvedaví, ako štandardné I / O 78 00:03:28,060 --> 00:03:30,460 knižničný funkcie pracujú. 79 00:03:30,460 --> 00:03:33,910 Takže jeden kľúč vec k poznámke, však je, že hlavičkové súbory 80 00:03:33,910 --> 00:03:36,740 zvyčajne nezahŕňajú definície funkcií - 81 00:03:36,740 --> 00:03:40,020 to znamená, že skutočné funkcie implementácie. 82 00:03:40,020 --> 00:03:42,470 To je ilustrácia významného informatiky 83 00:03:42,470 --> 00:03:45,700 Princíp tzv skrývanie informácií, tiež odvolával sa na v 84 00:03:45,700 --> 00:03:48,960 krát zapuzdrenie. 85 00:03:48,960 --> 00:03:52,630 >> Ako užívateľ alebo klient o knižnice, budete nemusíte 86 00:03:52,630 --> 00:03:54,230 vedieť o vnútra knižnice v 87 00:03:54,230 --> 00:03:55,380 Aby bolo možné použiť ju. 88 00:03:55,380 --> 00:03:57,800 Nezabudnite vidieť printf len trochu pred? 89 00:03:57,800 --> 00:04:00,275 Keby ste niekedy videli skutočný kód pred? 90 00:04:00,275 --> 00:04:02,535 No, predpokladám, že nemáte, aj keď si možno 91 00:04:02,535 --> 00:04:05,090 boli použité printf ton časov. 92 00:04:05,090 --> 00:04:08,110 Všetko, čo musel vedieť, bolo, Deklarácia funkcie súčasnej 93 00:04:08,110 --> 00:04:10,940 v stdio.h hlavičke súboru. 94 00:04:10,940 --> 00:04:14,010 Každopádne, výhoda dobrého skrývanie informácií je to, že 95 00:04:14,010 --> 00:04:16,820 a programy, ktoré napísať sú izolované od akýchkoľvek zmien v 96 00:04:16,820 --> 00:04:20,209 kód implementácia knižnice funkcií. 97 00:04:20,209 --> 00:04:22,880 Ak implementácia printf zmien, nemáte 98 00:04:22,880 --> 00:04:26,310 ísť a zmeniť všetky programy, ktoré používajú printf. 99 00:04:26,310 --> 00:04:28,450 >> Takže tam, kde sa realizácia ísť? 100 00:04:28,450 --> 00:04:31,020 No, opäť, podľa konvencie, implementácia ide do 101 00:04:31,020 --> 00:04:34,310 súbor s príponou. súboru c 102 00:04:34,310 --> 00:04:36,820 Obvykle, hlavičkové súbory a implementácia súbory idú ruku 103 00:04:36,820 --> 00:04:39,380 v ruke, takže ak ste vyhlásil veľa nového reťazca 104 00:04:39,380 --> 00:04:42,950 funkcie v mystring.h, potom budete definovať všetky 105 00:04:42,950 --> 00:04:46,960 tieto funkcie v MyString. c. 106 00:04:46,960 --> 00:04:49,230 Takže hlavičkové a realizácia súbory sú potom 107 00:04:49,230 --> 00:04:52,230 zostavený, vytvárať objektové súbory, ktoré sú potom spojené 108 00:04:52,230 --> 00:04:55,360 spoločne produkovať binárny súbor knižnice. 109 00:04:55,360 --> 00:04:58,520 Knižnica spisovateľ potom loď binárny súbor pozdĺž 110 00:04:58,520 --> 00:05:00,720 s hlavičkových súborov na programátorov, ktorí chcú využiť 111 00:05:00,720 --> 00:05:02,280 knižnica. 112 00:05:02,280 --> 00:05:04,640 V tomto bode sa. C Prevedenie súbory nie sú 113 00:05:04,640 --> 00:05:07,840 potreba, s výnimkou prekompilovať knižnicu od nuly, takže 114 00:05:07,840 --> 00:05:10,270 oni často vynecháva. 115 00:05:10,270 --> 00:05:13,670 >> Ak chcete použiť knižnicu C, musíte urobiť dve veci. 116 00:05:13,670 --> 00:05:16,890 Po prvé, musíte # include knižnice a hlavičkové súbory na 117 00:05:16,890 --> 00:05:18,700 Zdrojový kód súboru, kde chcete použiť 118 00:05:18,700 --> 00:05:20,530 knižnice kódu. 119 00:05:20,530 --> 00:05:23,200 To informuje kompilátor všetkých vyhlásenie o 120 00:05:23,200 --> 00:05:26,890 funkcie, premenné, štruktúr, et cetera, prítomné v 121 00:05:26,890 --> 00:05:30,510 hlavičkové súbory, takže kompilátor môže jeden, sa uistili, že 122 00:05:30,510 --> 00:05:33,280 ste pomocou knižnice zdroje správnym spôsobom, 123 00:05:33,280 --> 00:05:37,120 a za druhé, generovať zodpovedajúci kód assembleri. 124 00:05:37,120 --> 00:05:38,910 V závislosti na tom, kde sa knižnica je hlavičkové súbory sú 125 00:05:38,910 --> 00:05:42,720 nachádza, # include syntaxe sa líšia. 126 00:05:42,720 --> 00:05:44,880 Ak hlavičkové súbory sú umiestnené v systéme je 127 00:05:44,880 --> 00:05:46,690 Predvolený obsahovať adresár - 128 00:05:46,690 --> 00:05:48,780 typicky, usr/include-- 129 00:05:48,780 --> 00:05:52,200 potom uhol zátvorky syntaxe je použitá, ako v # zahŕňajú 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 Avšak, v prípade, že hlavičkové súbory sú umiestnené v rovnakej 132 00:05:59,540 --> 00:06:02,960 adresár ako vlastný kód, úvodzovky syntax je 133 00:06:02,960 --> 00:06:04,870 používaný, ako v # zahŕňajú "mylib.h". 134 00:06:08,630 --> 00:06:11,220 >> Druhá vec, ktorú musíte urobiť, je spojiť v binárnom 135 00:06:11,220 --> 00:06:13,760 Súbor knižnice pri kompilácii 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 Pamätáš sa na naše skoršie diskusiu o tom, ako hlavička 138 00:06:17,540 --> 00:06:20,200 Súbory neobsahujú implementácia kód? 139 00:06:20,200 --> 00:06:22,200 Ak ste zabudli tento krok, budete sa chyby o 140 00:06:22,200 --> 00:06:24,990 nedefinované symboly uvedenú v kóde. 141 00:06:24,990 --> 00:06:29,580 Ak chcete vyriešiť tento problém, použite-l bezprostredne nasleduje 142 00:06:29,580 --> 00:06:32,320 bez priestoru podľa názvu knižnice. 143 00:06:32,320 --> 00:06:35,410 Na mnohých systémoch, vrátane zariadenia, C Štandardné 144 00:06:35,410 --> 00:06:38,350 Knižnice sú automaticky prepojené pre vás. 145 00:06:38,350 --> 00:06:41,700 Avšak, je matematická knižnica niekedy zviazaný samostatne 146 00:06:41,700 --> 00:06:44,600 a mohla by byť spojená s-lm. 147 00:06:44,600 --> 00:06:47,760 Na zariadenia, my sa postaráme o to pre vás, a tiež 148 00:06:47,760 --> 00:06:52,170 odkaz na CS50 knižnicu-lcs50. 149 00:06:52,170 --> 00:06:54,540 Môžete vidieť všetko na prístroji pri spustení vykonať. 150 00:06:57,620 --> 00:06:59,130 >> Teraz by ste mali mať znalosti, ktoré potrebujete na používanie 151 00:06:59,130 --> 00:07:02,150 knižnice v C. Dobre sa bavte. 152 00:07:02,150 --> 00:07:05,880 Moje meno je Nate Hardison, a to je CS50.