1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] Nate HARDISON: En programado, biblioteko estas kolekto de 2 00:00:09,470 --> 00:00:11,380 rilatantaj prewritten kodo. 3 00:00:11,380 --> 00:00:14,350 Bibliotekoj estas kiel ni, kiel programistoj, dividi kaj komunaj 4 00:00:14,350 --> 00:00:16,930 helpema kodo kun la alia, kun la diversaj programoj ni 5 00:00:16,930 --> 00:00:19,470 skribi, kaj eĉ kun la malsamaj procezoj kurante al 6 00:00:19,470 --> 00:00:21,380 la sama tempo en niaj komputiloj. 7 00:00:21,380 --> 00:00:23,000 >> Ni esploras iom. 8 00:00:23,000 --> 00:00:25,070 Unu el la pli komuna funkcioj kiuj vi havas probable 9 00:00:25,070 --> 00:00:27,500 estis uzante estas la printf funkcio. 10 00:00:27,500 --> 00:00:29,820 Nun, printf ne iu magio funkcio ke tio estis 11 00:00:29,820 --> 00:00:31,670 malmola kodita en la komputilo - 12 00:00:31,670 --> 00:00:34,320 pli ĝuste, ĝi estas parto de la C Standard Bibliotekoj, kiu estas 13 00:00:34,320 --> 00:00:36,080 kolekto de funkcioj kiu venas kun la 14 00:00:36,080 --> 00:00:38,050 C programlingvo. 15 00:00:38,050 --> 00:00:40,920 Ekde printf ne estas konstruita en la komputilo, kiu volas diri ke 16 00:00:40,920 --> 00:00:43,520 estis iu programisto kiu fakte eniris kaj skribis la 17 00:00:43,520 --> 00:00:46,310 printf funkcio kaj ekestos ĝin kun la resto de la normo 18 00:00:46,310 --> 00:00:48,880 bibliotekoj por ke estontaj programistoj ne devus 19 00:00:48,880 --> 00:00:50,310 duobligi la penado. 20 00:00:50,310 --> 00:00:52,620 Kaj ni certe dankema ke tio estas la kazo, ĉar kontroli 21 00:00:52,620 --> 00:00:54,710 el kiom kodo efektive portas apliki printf. 22 00:00:59,590 --> 00:01:02,860 >> La C Standard Bibliotekoj, de kiuj printf estas parto, estas 23 00:01:02,860 --> 00:01:04,480 unu el la plej gravaj iloj vin 24 00:01:04,480 --> 00:01:06,770 havas en tuŝi CS50. 25 00:01:06,770 --> 00:01:08,780 Krom la eneliga biblioteko kie 26 00:01:08,780 --> 00:01:11,370 printf vivojn, estas amaso de aliaj bibliotekoj kiuj 27 00:01:11,370 --> 00:01:14,230 vi probable uzas la kurso de CS50. 28 00:01:14,230 --> 00:01:16,730 Ekzemple, la kordo biblioteko havas funkciojn por 29 00:01:16,730 --> 00:01:20,960 kompari C kordoj, kroĉis lian longo, kaj concatenate ilin. 30 00:01:20,960 --> 00:01:22,410 Kaj la matematikaj biblioteko donas helpema 31 00:01:22,410 --> 00:01:25,062 konstantoj, kiel pi kaj e. 32 00:01:25,062 --> 00:01:27,650 Nun, kompare al la norma biblioteko de aliaj programado 33 00:01:27,650 --> 00:01:31,190 lingvoj, la C Standard Bibliotekoj estas vere malgranda, 34 00:01:31,190 --> 00:01:34,060 sed ili ankoraŭ havas signifan kvanton de aĵoj. 35 00:01:34,060 --> 00:01:36,370 Kaj tio ne estas diri ke la Normo Bibliotekoj estas la 36 00:01:36,370 --> 00:01:39,020 nur C bibliotekoj; estas multaj pli tie en la 37 00:01:39,020 --> 00:01:42,460 mondo por vi uzi, inkludante la CS50 Biblioteko, 38 00:01:42,460 --> 00:01:45,150 kartografio bibliotekoj kun ĉifrado kaj malĉifro 39 00:01:45,150 --> 00:01:48,000 funkcioj, bibliotekoj kun funkcioj por kodi kaj 40 00:01:48,000 --> 00:01:50,970 ludi reen video, kaj tiel plu. 41 00:01:50,970 --> 00:01:53,190 >> Ĉi tio alportas al ni gravan flanken. 42 00:01:53,190 --> 00:01:55,500 Unu el la esencaj kapabloj de inĝenierio estas koni la 43 00:01:55,500 --> 00:01:58,090 disponeblaj iloj en via skatolo tiel ke vi povas uzi 44 00:01:58,090 --> 00:01:59,850 ilin kaj eviti reinventing la radon se 45 00:01:59,850 --> 00:02:01,510 vi devas fari tion. 46 00:02:01,510 --> 00:02:04,120 Kiel programistoj, bibliotekoj estas unu el la plej gravaj 47 00:02:04,120 --> 00:02:05,520 iloj ni havas. 48 00:02:05,520 --> 00:02:08,520 Kiam vi trovas vin mem alfrontas tasko kiu ŝajnas teda aŭ 49 00:02:08,520 --> 00:02:11,940 banala, kiel trovi la longo de C kordoj, vi 50 00:02:11,940 --> 00:02:14,020 demandu vin mem, se ĝi povus esti la kazo ke 51 00:02:14,020 --> 00:02:16,520 ies jam faris la samon antaŭe. 52 00:02:16,520 --> 00:02:17,760 Certe ke vi povus trovi iun 53 00:02:17,760 --> 00:02:20,110 helpi ene de biblioteko. 54 00:02:20,110 --> 00:02:23,260 >> Do en teknikaj terminoj, biblioteko estas duuma dosiero 55 00:02:23,260 --> 00:02:26,210 estis produktita de kunligi kune kolekto de 56 00:02:26,210 --> 00:02:28,880 objekto dosierojn uzante ilo nomita, vi 57 00:02:28,880 --> 00:02:31,010 divenis, la enlazador. 58 00:02:31,010 --> 00:02:33,830 Objekto dosieroj estas tiuj. O dosierojn kiuj vi akiras, kiam vi 59 00:02:33,830 --> 00:02:35,860 kompili C fonta kodo. 60 00:02:35,860 --> 00:02:38,420 Kiam programistoj skribi bibliotekoj, ili tipe 61 00:02:38,420 --> 00:02:41,560 apartigi liajn C-kodo en du tipojn de dosieroj: 62 00:02:41,560 --> 00:02:44,880 kaplinio dosierojn kaj efektivigo dosierojn. 63 00:02:44,880 --> 00:02:49,820 Al kapdosiero per konvencio estas donita la. H sufikso, 64 00:02:49,820 --> 00:02:51,940 kaj ĝi enhavas kodon kiu deklaras la biblioteko 65 00:02:51,940 --> 00:02:55,120 rimedoj, kiuj estas disponeblaj por vi uzi. 66 00:02:55,120 --> 00:02:58,830 Tiuj rimedoj inkluzivas funkcioj, variabloj, structs, 67 00:02:58,830 --> 00:03:01,980 tipo difinojn, kaj tiel plu, kaj kune, ili estas 68 00:03:01,980 --> 00:03:04,620 kutime referita al kiel la interfaco. 69 00:03:04,620 --> 00:03:07,280 Fakte, se vi iam demandis kio estas en biblioteko, 70 00:03:07,280 --> 00:03:09,580 la ĉapon dosieroj estas la loko por rigardi. 71 00:03:09,580 --> 00:03:14,030 >> Ekzemple, vi povas tiri supren usr / inkluzivi / stdio.h kaj kontroli 72 00:03:14,030 --> 00:03:16,210 el ĉio vi iam volis scii pri 73 00:03:16,210 --> 00:03:18,570 la normo io biblioteko. 74 00:03:18,570 --> 00:03:20,610 Ekzistas multe da taskoj en ĉi tie, kaj ĝi povas preni iom da 75 00:03:20,610 --> 00:03:22,420 tempon por vadi tra. 76 00:03:22,420 --> 00:03:25,840 Tamen, kune kun Google kaj la manpages, ĉi tiu estas la 77 00:03:25,840 --> 00:03:28,060 meti por iri se vi scivolas kiel la norma / S 78 00:03:28,060 --> 00:03:30,460 biblioteko funkcioj funkcii. 79 00:03:30,460 --> 00:03:33,910 Do unu klavo afero noti tie, tamen, estas ke header files 80 00:03:33,910 --> 00:03:36,740 tipe ne inkludas funkcio difinoj - 81 00:03:36,740 --> 00:03:40,020 tio estas, la reala funkcio implementaciones. 82 00:03:40,020 --> 00:03:42,470 Ĉi tiu estas ilustrado de grava komputiko 83 00:03:42,470 --> 00:03:45,700 principo nomita informoj kaŝante, ankaŭ nomita en 84 00:03:45,700 --> 00:03:48,960 fojoj encapsulación. 85 00:03:48,960 --> 00:03:52,630 >> Kiel la uzanto aŭ la kliento de biblioteko, vi ne bezonas 86 00:03:52,630 --> 00:03:54,230 scias pri la internals de la biblioteko en 87 00:03:54,230 --> 00:03:55,380 ordigi uzi ĝin. 88 00:03:55,380 --> 00:03:57,800 Memoru vidante printf nur iom antaŭe? 89 00:03:57,800 --> 00:04:00,275 Se vi iam vidis la reala kodo antaŭ? 90 00:04:00,275 --> 00:04:02,535 Nu, mi supozas ke vi ne havas, eĉ kvankam vi eble 91 00:04:02,535 --> 00:04:05,090 uzis printf tunoj da fojoj. 92 00:04:05,090 --> 00:04:08,110 Vi devis scii estis la funkcio deklaro aktuala 93 00:04:08,110 --> 00:04:10,940 en la stdio.h header dosiero. 94 00:04:10,940 --> 00:04:14,010 Ĉiuokaze, la profito de bonaj informoj kaŝejo estas, ke vi 95 00:04:14,010 --> 00:04:16,820 kaj la programoj kiujn vi skribas estas ekster ajna ŝanĝoj en 96 00:04:16,820 --> 00:04:20,209 La kodo de la efektivigo de biblioteko funkcioj. 97 00:04:20,209 --> 00:04:22,880 Se la apliko de printf ŝanĝojn, vi ne havas 98 00:04:22,880 --> 00:04:26,310 iri kaj ŝanĝi ĉiujn viajn programojn kiuj uzas printf. 99 00:04:26,310 --> 00:04:28,450 >> Do kie tio efektivigo iri? 100 00:04:28,450 --> 00:04:31,020 Nu, denove, per konvencio, la efektivigo iras en 101 00:04:31,020 --> 00:04:34,310 dosieron kun la. c sufikso. 102 00:04:34,310 --> 00:04:36,820 Kutime, header dosierojn kaj efektivigo dosieroj iri manon 103 00:04:36,820 --> 00:04:39,380 en la mano, do se vi deklaris faskon da novaj kordoj 104 00:04:39,380 --> 00:04:42,950 funkcioj en mystring.h, tiam vi difinas cxiuj 105 00:04:42,950 --> 00:04:46,960 tiuj funkcioj en mystring. c. 106 00:04:46,960 --> 00:04:49,230 Do tiam la kaploko kaj efektivigo dosieroj estas tiam 107 00:04:49,230 --> 00:04:52,230 kompilita, kreante objekto dosierojn kiuj tiam ligitaj 108 00:04:52,230 --> 00:04:55,360 kune por produkti la duuma biblioteko dosiero. 109 00:04:55,360 --> 00:04:58,520 La biblioteko verkisto tiam ŝipo la duuma dosiero kune 110 00:04:58,520 --> 00:05:00,720 kun la header files por programistoj kiuj volas uzi 111 00:05:00,720 --> 00:05:02,280 la biblioteko. 112 00:05:02,280 --> 00:05:04,640 Je ĉi tiu punkto, la. C efektivigo dosieroj ne estas 113 00:05:04,640 --> 00:05:07,840 bezonata, krom recompilar la biblioteko de nulo, tiel 114 00:05:07,840 --> 00:05:10,270 ili estas ofte lasitaj ekstere. 115 00:05:10,270 --> 00:05:13,670 >> Por uzi la C biblioteko, vi devas fari du aĵojn. 116 00:05:13,670 --> 00:05:16,890 Unue, vi devas # include la biblioteko header dosierojn kaj la 117 00:05:16,890 --> 00:05:18,700 fontkodon dosiero kie vi volas uzi 118 00:05:18,700 --> 00:05:20,530 la biblioteko kodo. 119 00:05:20,530 --> 00:05:23,200 Ĉi informas la tradukilon el ĉiuj de la deklaroj de 120 00:05:23,200 --> 00:05:26,890 funkcioj, variabloj, structs, kaj tiel plu, ĉeestanta en la 121 00:05:26,890 --> 00:05:30,510 header files por ke la tradukilo povas unu, certigi ke 122 00:05:30,510 --> 00:05:33,280 vi uzas la bibliotekon de rimedoj en la taŭgan vojon, 123 00:05:33,280 --> 00:05:37,120 kaj du, generi la taŭga asembleo kodo. 124 00:05:37,120 --> 00:05:38,910 Depende kie la biblioteko header dosieroj 125 00:05:38,910 --> 00:05:42,720 lokitaj, la # inkluzivas sintakso varias. 126 00:05:42,720 --> 00:05:44,880 Se la kaplinion dosieroj estas lokita en la sistemo 127 00:05:44,880 --> 00:05:46,690 defaŭlta inkludas dosierujon - 128 00:05:46,690 --> 00:05:48,780 tipe, usr/include-- 129 00:05:48,780 --> 00:05:52,200 tiam la angulo krampoj sintakso estas uzata, kiel en # include 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 Tamen, se la kaplinion dosieroj estas lokita en la sama 132 00:05:59,540 --> 00:06:02,960 dosierujo kiel vian propran kodon, la duobla citaĵo sintakso estas 133 00:06:02,960 --> 00:06:04,870 uzata, kiel en # include "mylib.h". 134 00:06:08,630 --> 00:06:11,220 >> La dua afero kion vi devas fari estas ligi en la duuma 135 00:06:11,220 --> 00:06:13,760 biblioteko dosiero kiam vi kompili vian kodon. 136 00:06:13,760 --> 00:06:15,810 Ĉi tiu estas super grava paŝo. 137 00:06:15,810 --> 00:06:17,540 Memoru nia pli frua diskuto pri kiel header 138 00:06:17,540 --> 00:06:20,200 dosieroj ne enhavas efektivigo kodo? 139 00:06:20,200 --> 00:06:22,200 Se vi forgesos tiun paŝon, vi ricevos erarojn pri 140 00:06:22,200 --> 00:06:24,990 nedefinita simboloj referenciado en via kodo. 141 00:06:24,990 --> 00:06:29,580 Por solvi tion, uzu la-l flago sekvis tuj 142 00:06:29,580 --> 00:06:32,320 sen spaco per la nomo de la biblioteko. 143 00:06:32,320 --> 00:06:35,410 Sur multaj sistemoj, inkluzive de la aparaton, la C Norma 144 00:06:35,410 --> 00:06:38,350 Bibliotekoj aŭtomate ligitaj al vi. 145 00:06:38,350 --> 00:06:41,700 Tamen, la math biblioteko estas iam ekestos aparte 146 00:06:41,700 --> 00:06:44,600 kaj eble bezonos esti ligitaj kun-lm. 147 00:06:44,600 --> 00:06:47,760 Sur la aparaton, ni prizorgi tion por vi, kaj ni ankaŭ 148 00:06:47,760 --> 00:06:52,170 ligi la CS50 biblioteko kun-lcs50. 149 00:06:52,170 --> 00:06:54,540 Vi povas vidi ĉion ĉi pri la aparaton, kiam vi kuris fari. 150 00:06:57,620 --> 00:06:59,130 >> Nun vi devus havi la scion vi bezonas uzi 151 00:06:59,130 --> 00:07:02,150 bibliotekoj en C. Have fun esplori. 152 00:07:02,150 --> 00:07:05,880 Mia nomo estas Nate Hardison, kaj ĉi tiu estas CS50.