1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] Nate Hardison: A programozás, a könyvtár gyűjteménye 2 00:00:09,470 --> 00:00:11,380 kapcsolódó előre megírt kódot. 3 00:00:11,380 --> 00:00:14,350 A könyvtárak hogyan, mivel programozók, közösek és 4 00:00:14,350 --> 00:00:16,930 Hasznosnak kód egymással, a különböző programok között 5 00:00:16,930 --> 00:00:19,470 levelet, és még a különböző folyamatokat futó 6 00:00:19,470 --> 00:00:21,380 Ugyanakkor a mi számítógépek. 7 00:00:21,380 --> 00:00:23,000 >> Fedezzük fel egy kicsit. 8 00:00:23,000 --> 00:00:25,070 Az egyik közös feladatokat, amit valószínűleg 9 00:00:25,070 --> 00:00:27,500 használ a printf függvény. 10 00:00:27,500 --> 00:00:29,820 Most printf nem valami mágikus funkciója, hogy a már 11 00:00:29,820 --> 00:00:31,670 kódolva a számítógép - 12 00:00:31,670 --> 00:00:34,320 igen, ez része a C Standard könyvtárak, amelyek 13 00:00:34,320 --> 00:00:36,080 gyűjteménye funkciók jön a 14 00:00:36,080 --> 00:00:38,050 C programozási nyelv. 15 00:00:38,050 --> 00:00:40,920 Mivel a printf nem épül be a számítógépbe, azt jelenti, hogy 16 00:00:40,920 --> 00:00:43,520 volt némi programozó, aki valóban elment, és írta a 17 00:00:43,520 --> 00:00:46,310 printf függvény és a mellékelt azt a többi szabvány 18 00:00:46,310 --> 00:00:48,880 könyvtárakat, hogy a jövőben a programozók nem kellene 19 00:00:48,880 --> 00:00:50,310 példányban az erőfeszítést. 20 00:00:50,310 --> 00:00:52,620 És biztosak vagyunk benne, hogy hálás, hogy ez a helyzet, mert a megtekintéséhez 21 00:00:52,620 --> 00:00:54,710 , mennyi-kód valójában ahhoz, hogy végre printf. 22 00:00:59,590 --> 00:01:02,860 >> A C Standard könyvtárak, amelynek printf része, a 23 00:01:02,860 --> 00:01:04,480 az egyik legfontosabb eszközöket 24 00:01:04,480 --> 00:01:06,770 tekintette kezelésében CS50. 25 00:01:06,770 --> 00:01:08,780 Amellett, hogy a bemenet-kimenet könyvtár ahol 26 00:01:08,780 --> 00:01:11,370 printf él, van egy csomó más könyvtárak 27 00:01:11,370 --> 00:01:14,230 akkor valószínűleg használni folyamán CS50. 28 00:01:14,230 --> 00:01:16,730 Így például, a húr könyvtári funkciókkal kell 29 00:01:16,730 --> 00:01:20,960 összehasonlítani C vonósok, kap a hossza, és összefűzi őket. 30 00:01:20,960 --> 00:01:22,410 És a matematikai könyvtárat ad hasznos 31 00:01:22,410 --> 00:01:25,062 állandók, mint a pi és e. 32 00:01:25,062 --> 00:01:27,650 Most, összehasonlítva a szabványos könyvtárakat más programozási 33 00:01:27,650 --> 00:01:31,190 nyelvek, a C Standard könyvtárak nagyon kicsi, 34 00:01:31,190 --> 00:01:34,060 de még mindig jelentős mennyiségű cucc. 35 00:01:34,060 --> 00:01:36,370 És ez még nem jelenti azt, hogy a szabvány könyvtárak a 36 00:01:36,370 --> 00:01:39,020 Csak a C könyvtárak, ott sokkal több kint a 37 00:01:39,020 --> 00:01:42,460 világ használatát, beleértve a CS50 Könyvtár, 38 00:01:42,460 --> 00:01:45,150 térképészet könyvtárak titkosítás és dekódolás 39 00:01:45,150 --> 00:01:48,000 függvények, könyvtárak funkciók kódolására és 40 00:01:48,000 --> 00:01:50,970 lejátszani videó, és így tovább. 41 00:01:50,970 --> 00:01:53,190 >> Ez elvezet minket egy fontos félre. 42 00:01:53,190 --> 00:01:55,500 Az egyik alapvető készségek műszaki ismerete, hogy a 43 00:01:55,500 --> 00:01:58,090 rendelkezésre álló eszközöket a toolbox, hogy tudod használni 44 00:01:58,090 --> 00:01:59,850 őket, és elkerülni újra feltalálja a kereket, kivéve, ha 45 00:01:59,850 --> 00:02:01,510 meg kell tenni. 46 00:02:01,510 --> 00:02:04,120 Mint programozók, könyvtárak az egyik legfontosabb 47 00:02:04,120 --> 00:02:05,520 eszközökkel van. 48 00:02:05,520 --> 00:02:08,520 Ha szembe találja magát olyan feladat, amely úgy tűnik, unalmas, vagy 49 00:02:08,520 --> 00:02:11,940 közhely, mint megtalálni a hossza C string, akkor 50 00:02:11,940 --> 00:02:14,020 kérdezd meg magadtól, ha ez az eset állhat fenn, hogy a 51 00:02:14,020 --> 00:02:16,520 valaki már megtette ugyanezt előtt. 52 00:02:16,520 --> 00:02:17,760 Esélye van, hogy Ön is talál néhány 53 00:02:17,760 --> 00:02:20,110 Segítse egy könyvtár. 54 00:02:20,110 --> 00:02:23,260 >> Tehát technikai értelemben, a könyvtár egy bináris fájl, amely 55 00:02:23,260 --> 00:02:26,210 állítottak elő összekapcsolásával gyűjteménye 56 00:02:26,210 --> 00:02:28,880 objektum fájlok nevű eszközt, akkor 57 00:02:28,880 --> 00:02:31,010 kitalálta, akkor a linker. 58 00:02:31,010 --> 00:02:33,830 Object fájlok azok. O fájlokat kapunk, ha 59 00:02:33,830 --> 00:02:35,860 fordítsd C forráskódot. 60 00:02:35,860 --> 00:02:38,420 Amikor a programozók levelet könyvtárak, jellemzően 61 00:02:38,420 --> 00:02:41,560 szelektív C kód két típusú fájlokat: 62 00:02:41,560 --> 00:02:44,880 header fájlokat és végrehajtás fájlokat. 63 00:02:44,880 --> 00:02:49,820 A header fájlt megegyezés kap a. H fájl kiterjesztését, 64 00:02:49,820 --> 00:02:51,940 és kódot tartalmaz, amely deklarálja a könyvtár 65 00:02:51,940 --> 00:02:55,120 erőforrások rendelkezésre állnak az Ön használni. 66 00:02:55,120 --> 00:02:58,830 Ezek a források közé tartozik függvények, változók, struktúrákat, 67 00:02:58,830 --> 00:03:01,980 típus meghatározások, és így tovább, és együtt, ezek 68 00:03:01,980 --> 00:03:04,620 közkeletű nevén a felület. 69 00:03:04,620 --> 00:03:07,280 Tény, hogy ha valaha is kíváncsi, mi van a könyvtár, 70 00:03:07,280 --> 00:03:09,580 A fejléc fájlok a hely, hogy vizsgálja meg. 71 00:03:09,580 --> 00:03:14,030 >> Például, akkor húzza fel usr / include / stdio.h és bejelentkezés 72 00:03:14,030 --> 00:03:16,210 ki mindent, amit valaha is akartam tudni 73 00:03:16,210 --> 00:03:18,570 a standard io könyvtár. 74 00:03:18,570 --> 00:03:20,610 Van egy csomó dolog van itt, és ez eltarthat egy kis 75 00:03:20,610 --> 00:03:22,420 ideje, hogy gázol keresztül. 76 00:03:22,420 --> 00:03:25,840 Azonban, valamint a Google és a man oldalak, ez a 77 00:03:25,840 --> 00:03:28,060 hely, hogy menjen, ha kíváncsiak vagytok, hogy a standard I / O 78 00:03:28,060 --> 00:03:30,460 könyvtári funkciók működnek. 79 00:03:30,460 --> 00:03:33,910 Tehát az egyik legfontosabb dolog megjegyezni azonban, hogy a header fájlok 80 00:03:33,910 --> 00:03:36,740 általában nem tartalmaznak függvénydefiníciókat - 81 00:03:36,740 --> 00:03:40,020 azaz, a tényleges függvény megvalósítások. 82 00:03:40,020 --> 00:03:42,470 Ez rávilágít egy fontos számítástechnika 83 00:03:42,470 --> 00:03:45,700 elvének nevezett információ rejtőzik is pontban említett 84 00:03:45,700 --> 00:03:48,960 ahányszor encapsulation. 85 00:03:48,960 --> 00:03:52,630 >> Mivel a felhasználó vagy az ügyfél egy könyvtár, akkor nem kell 86 00:03:52,630 --> 00:03:54,230 tudni a belső a könyvtár 87 00:03:54,230 --> 00:03:55,380 kötelezze használni. 88 00:03:55,380 --> 00:03:57,800 Emlékezzen látta printf csak egy kicsit ezelőtt? 89 00:03:57,800 --> 00:04:00,275 Vajon valaha látott maga a kód előtt? 90 00:04:00,275 --> 00:04:02,535 Nos, feltételezem, hogy nem, még ha esetleg 91 00:04:02,535 --> 00:04:05,090 használták printf tonna alkalommal. 92 00:04:05,090 --> 00:04:08,110 Minden, amit tudni kellett feladata volt jelen nyilatkozat 93 00:04:08,110 --> 00:04:10,940 A stdio.h header fájlt. 94 00:04:10,940 --> 00:04:14,010 Különben is, a haszon jó információ rejtőzik az, hogy 95 00:04:14,010 --> 00:04:16,820 és a programokat írsz szigeteltek bármely változás 96 00:04:16,820 --> 00:04:20,209 A kód végrehajtásának könyvtári funkciókat. 97 00:04:20,209 --> 00:04:22,880 Amennyiben végrehajtása printf változások, akkor nem kell 98 00:04:22,880 --> 00:04:26,310 menni, és módosíthatja az összes használó programok printf. 99 00:04:26,310 --> 00:04:28,450 >> Szóval, ha nem megy végrehajtás? 100 00:04:28,450 --> 00:04:31,020 Nos, ismét, megállapodás szerint, a végrehajtási megy a 101 00:04:31,020 --> 00:04:34,310 fájlt. ac fájl kiterjesztését. 102 00:04:34,310 --> 00:04:36,820 Általában header fájlokat és végrehajtási fájlokat kéz 103 00:04:36,820 --> 00:04:39,380 a kezében, így ha már bejelentett egy csomó új string 104 00:04:39,380 --> 00:04:42,950 funkciók mystring.h, akkor lesz meg az összes 105 00:04:42,950 --> 00:04:46,960 ezeket a funkciókat a mystring. c. 106 00:04:46,960 --> 00:04:49,230 Tehát akkor a fejléc és végrehajtásának fájlok ezután 107 00:04:49,230 --> 00:04:52,230 összeállítani, ami objektum fájlok ezután kapcsolódik 108 00:04:52,230 --> 00:04:55,360 együtt a könyvtár a bináris fájlt. 109 00:04:55,360 --> 00:04:58,520 A könyvtár író ekkor a hajó a bináris fájl mentén 110 00:04:58,520 --> 00:05:00,720 A fejléc fájlokat a programozók, akik a használni kívánt 111 00:05:00,720 --> 00:05:02,280 a könyvtár. 112 00:05:02,280 --> 00:05:04,640 Ezen a ponton, a. C végrehajtás fájlok nem 113 00:05:04,640 --> 00:05:07,840 szükséges, kivéve újrafordítani a könyvtár a semmiből, így a 114 00:05:07,840 --> 00:05:10,270 ők gyakran kihagyják. 115 00:05:10,270 --> 00:05:13,670 >> Ahhoz, hogy a C könyvtár, akkor két dolgot. 116 00:05:13,670 --> 00:05:16,890 Először is meg kell # include a könyvtár header fájlokat és a 117 00:05:16,890 --> 00:05:18,700 forráskód fájl, ahol a használni kívánt 118 00:05:18,700 --> 00:05:20,530 a könyvtár kódot. 119 00:05:20,530 --> 00:05:23,200 Ez tájékoztatja a fordító az összes nyilatkozatok 120 00:05:23,200 --> 00:05:26,890 függvények, változók, struktúrákat, satöbbi, jelen van a 121 00:05:26,890 --> 00:05:30,510 header fájlokat, oly módon, hogy a fordító egy, biztosítja, hogy 122 00:05:30,510 --> 00:05:33,280 Ön a könyvtár erőforrásainak megfelelő módon, 123 00:05:33,280 --> 00:05:37,120 és két generálni a megfelelő assembly kóddal. 124 00:05:37,120 --> 00:05:38,910 Attól függően, hogy a könyvtár header fájlok 125 00:05:38,910 --> 00:05:42,720 található, az # include szintaxis változik. 126 00:05:42,720 --> 00:05:44,880 Ha a header fájlok találhatók a rendszer 127 00:05:44,880 --> 00:05:46,690 alapértelmezett include könyvtárban - 128 00:05:46,690 --> 00:05:48,780 jellemzően usr/include-- 129 00:05:48,780 --> 00:05:52,200 akkor a szögletes zárójelek szintaxist használják, mint a # include 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 Azonban, ha a fejléc fájlok találhatók az ugyanazon 132 00:05:59,540 --> 00:06:02,960 könyvtár, mint a saját kóddal, idézőjel szintaxis 133 00:06:02,960 --> 00:06:04,870 használják, mint a # include "mylib.h". 134 00:06:08,630 --> 00:06:11,220 >> A második dolog, amit meg kell tennie, hogy kapcsolja a bináris 135 00:06:11,220 --> 00:06:13,760 könyvtárfájlt amikor fordítod a kódot. 136 00:06:13,760 --> 00:06:15,810 Ez egy szuper fontos lépés. 137 00:06:15,810 --> 00:06:17,540 Ne feledje, a korábbi vitát arról, hogy miként header 138 00:06:17,540 --> 00:06:20,200 fájlok nem tartalmaznak végrehajtási kódot? 139 00:06:20,200 --> 00:06:22,200 Ha elfelejtette ezt a lépést, kapsz hibák mintegy 140 00:06:22,200 --> 00:06:24,990 nem definiált szimbólumok hivatkozott kódot. 141 00:06:24,990 --> 00:06:29,580 Ennek kiküszöbölésére használd a-l flag majd azonnal 142 00:06:29,580 --> 00:06:32,320 szóköz nélkül a neve a könyvtár. 143 00:06:32,320 --> 00:06:35,410 Sok rendszerek, beleértve a készüléket, a C Standard 144 00:06:35,410 --> 00:06:38,350 A könyvtárak automatikusan kapcsolódnak az Ön számára. 145 00:06:38,350 --> 00:06:41,700 Ugyanakkor a matematikai könyvtár néha külön csomagban 146 00:06:41,700 --> 00:06:44,600 és talán össze kell kapcsolni a-lm. 147 00:06:44,600 --> 00:06:47,760 A készüléket, mi gondoskodunk e az Ön számára, és mi is 148 00:06:47,760 --> 00:06:52,170 összekapcsolják a CS50 könyvtár-lcs50. 149 00:06:52,170 --> 00:06:54,540 Láthatjuk az összes ezt a készüléket, ha fut tenni. 150 00:06:57,620 --> 00:06:59,130 >> Most már a tudás, akkor kell használni 151 00:06:59,130 --> 00:07:02,150 könyvtárak C. Szórakozz felfedezéséhez. 152 00:07:02,150 --> 00:07:05,880 A nevem Nate Hardison, és ez CS50.