1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] NATE Hardison: W programowaniu biblioteki jest biblioteka 2 00:00:09,470 --> 00:00:11,380 related prewritten kod. 3 00:00:11,380 --> 00:00:14,350 Biblioteki są jak my, jako programiści, akcje wspólne i 4 00:00:14,350 --> 00:00:16,930 jako kod z sobą, z różnych programów, że 5 00:00:16,930 --> 00:00:19,470 pisać, a nawet z różnych procesów pracuje na 6 00:00:19,470 --> 00:00:21,380 w tym samym czasie na naszych komputerach. 7 00:00:21,380 --> 00:00:23,000 >> Przyjrzyjmy się nieco. 8 00:00:23,000 --> 00:00:25,070 Jednym z bardziej popularnych funkcji, które na pewno nie 9 00:00:25,070 --> 00:00:27,500 był używany jest funkcja printf. 10 00:00:27,500 --> 00:00:29,820 Teraz, nie jest jakaś magia printf funkcja już jest 11 00:00:29,820 --> 00:00:31,670 zakodowana w komputerze - 12 00:00:31,670 --> 00:00:34,320 raczej, że to część standardowych bibliotek C, które są 13 00:00:34,320 --> 00:00:36,080 zbiór funkcji, który pochodzi z 14 00:00:36,080 --> 00:00:38,050 Język programowania C. 15 00:00:38,050 --> 00:00:40,920 Ponieważ nie jest zbudowany printf do komputera, co oznacza, że 16 00:00:40,920 --> 00:00:43,520 było trochę programista, który rzeczywiście udał się i napisał 17 00:00:43,520 --> 00:00:46,310 printf funkcja i dołączony go z resztą średnia 18 00:00:46,310 --> 00:00:48,880 biblioteki, aby przyszłe programiści nie musiałyby 19 00:00:48,880 --> 00:00:50,310 powielania wysiłków. 20 00:00:50,310 --> 00:00:52,620 I jesteśmy pewni, wdzięczny, że tak jest, bo sprawdzić 21 00:00:52,620 --> 00:00:54,710 się, ile faktycznie ma kod do wdrożenia printf. 22 00:00:59,590 --> 00:01:02,860 >> W C Biblioteki Standard, z których printf jest częścią, są 23 00:01:02,860 --> 00:01:04,480 jednym z najważniejszych narzędzi można 24 00:01:04,480 --> 00:01:06,770 mają w walce CS50. 25 00:01:06,770 --> 00:01:08,780 Oprócz wejścia-wyjścia biblioteki, w której 26 00:01:08,780 --> 00:01:11,370 printf żyje, istnieje kilka innych bibliotek 27 00:01:11,370 --> 00:01:14,230 prawdopodobnie będziesz używać w ciągu CS50. 28 00:01:14,230 --> 00:01:16,730 Na przykład, w bibliotece ciąg zawiera funkcje 29 00:01:16,730 --> 00:01:20,960 porównywania łańcuchów C, aby ich długość i złączyć je. 30 00:01:20,960 --> 00:01:22,410 I biblioteka matematyczna daje przydatne 31 00:01:22,410 --> 00:01:25,062 stałe, jak i mailowo. pi 32 00:01:25,062 --> 00:01:27,650 Teraz, w porównaniu do innych standardowych bibliotek programowania 33 00:01:27,650 --> 00:01:31,190 języki, C Biblioteki standardowe są bardzo małe, 34 00:01:31,190 --> 00:01:34,060 ale wciąż mają znaczną ilość rzeczy. 35 00:01:34,060 --> 00:01:36,370 I to nie znaczy, że standard Biblioteki są 36 00:01:36,370 --> 00:01:39,020 Tylko C bibliotek, istnieje wiele więcej tam w 37 00:01:39,020 --> 00:01:42,460 świat do użycia, w tym CS50 Bibliotece 38 00:01:42,460 --> 00:01:45,150 Biblioteki kartografia z szyfrowania i deszyfrowania 39 00:01:45,150 --> 00:01:48,000 funkcje biblioteki z funkcjami kodowania i 40 00:01:48,000 --> 00:01:50,970 odtwarzanie wideo, i tak dalej. 41 00:01:50,970 --> 00:01:53,190 >> To prowadzi nas do ważne bok. 42 00:01:53,190 --> 00:01:55,500 Jedną z podstawowych umiejętności inżynierii jest wiedzieć 43 00:01:55,500 --> 00:01:58,090 narzędzia dostępne w przyborniku, aby można było używać 44 00:01:58,090 --> 00:01:59,850 im i uniknąć wyważania otwartych drzwi, chyba 45 00:01:59,850 --> 00:02:01,510 trzeba zrobić. 46 00:02:01,510 --> 00:02:04,120 Jako programiści, biblioteki są jednym z najważniejszych 47 00:02:04,120 --> 00:02:05,520 narzędzia mamy. 48 00:02:05,520 --> 00:02:08,520 Kiedy znajdziesz się w obliczu zadania, które wydaje się uciążliwe lub 49 00:02:08,520 --> 00:02:11,940 powszechne, jak znalezienie długość łańcucha C, to 50 00:02:11,940 --> 00:02:14,020 Należy zadać sobie pytanie, czy to może być tak, że 51 00:02:14,020 --> 00:02:16,520 ktoś już zrobił to samo przed. 52 00:02:16,520 --> 00:02:17,760 Są szanse, że można znaleźć kilka 53 00:02:17,760 --> 00:02:20,110 pomoc w bibliotece. 54 00:02:20,110 --> 00:02:23,260 >> Tak pod względem technicznym, biblioteka jest plik binarny, który 55 00:02:23,260 --> 00:02:26,210 został wytworzony przez połączenie ze sobą zbiór 56 00:02:26,210 --> 00:02:28,880 Pliki obiektów przy użyciu narzędzia, można 57 00:02:28,880 --> 00:02:31,010 Zgadłeś, linker. 58 00:02:31,010 --> 00:02:33,830 Pliki wynikowe są te pliki. O które dostajesz, kiedy 59 00:02:33,830 --> 00:02:35,860 skompilować kod źródłowy C. 60 00:02:35,860 --> 00:02:38,420 Kiedy programiści piszą bibliotek, są one zazwyczaj 61 00:02:38,420 --> 00:02:41,560 oddzielić swój kod C do dwóch typów plików: 62 00:02:41,560 --> 00:02:44,880 pliki nagłówkowe i pliki wdrożeniowe. 63 00:02:44,880 --> 00:02:49,820 Plik nagłówkowy umownie otrzymuje. Rozszerzenie h, 64 00:02:49,820 --> 00:02:51,940 i zawiera kod, który deklaruje biblioteki 65 00:02:51,940 --> 00:02:55,120 zasoby, które są dostępne do użycia. 66 00:02:55,120 --> 00:02:58,830 Zasoby te obejmują funkcje, zmienne, kodowanym 67 00:02:58,830 --> 00:03:01,980 definicje typów, i tak dalej, i razem są 68 00:03:01,980 --> 00:03:04,620 powszechnie określane jako interfejs. 69 00:03:04,620 --> 00:03:07,280 W rzeczywistości, jeśli kiedykolwiek zastanawiasz się, co znajduje się w bibliotece, 70 00:03:07,280 --> 00:03:09,580 pliki nagłówkowe są miejscem do poszukiwania. 71 00:03:09,580 --> 00:03:14,030 >> Na przykład, można podciągnąć usr / include / stdio.h i sprawdzić 72 00:03:14,030 --> 00:03:16,210 z wszystkiego, co kiedykolwiek chciałeś wiedzieć o 73 00:03:16,210 --> 00:03:18,570 Standardowa biblioteka IO. 74 00:03:18,570 --> 00:03:20,610 Jest wiele rzeczy w tutaj, a to może zająć trochę 75 00:03:20,610 --> 00:03:22,420 Czas przebrnąć. 76 00:03:22,420 --> 00:03:25,840 Jednakże, wraz ze Google i manpages, to 77 00:03:25,840 --> 00:03:28,060 miejsce, jeśli zastanawiasz się, jak standard I / O 78 00:03:28,060 --> 00:03:30,460 Funkcje biblioteczne działają. 79 00:03:30,460 --> 00:03:33,910 Tak więc jednym z kluczowych Warto zauważyć tutaj, choć to, że pliki nagłówkowe 80 00:03:33,910 --> 00:03:36,740 zazwyczaj nie zawierają definicji funkcji - 81 00:03:36,740 --> 00:03:40,020 to jest rzeczywiste implementacji funkcji. 82 00:03:40,020 --> 00:03:42,470 Jest to ilustracja ważnej informatyki 83 00:03:42,470 --> 00:03:45,700 Zasada nazywa ukrywania informacji, także o którym mowa w 84 00:03:45,700 --> 00:03:48,960 razy hermetyzacji. 85 00:03:48,960 --> 00:03:52,630 >> Jako użytkownik lub klient z biblioteki, nie muszą 86 00:03:52,630 --> 00:03:54,230 wiedzieć o wewnętrznych biblioteki w 87 00:03:54,230 --> 00:03:55,380 aby z niego skorzystać. 88 00:03:55,380 --> 00:03:57,800 Pamiętam printf tylko nieco temu? 89 00:03:57,800 --> 00:04:00,275 Gdybyś widział rzeczywisty kod wcześniej? 90 00:04:00,275 --> 00:04:02,535 Cóż, przypuszczam, że nie masz, nawet jeśli może to 91 00:04:02,535 --> 00:04:05,090 skorzystało printf mnóstwo razy. 92 00:04:05,090 --> 00:04:08,110 Wszystko, co musiał wiedzieć był obecny deklaracja funkcji 93 00:04:08,110 --> 00:04:10,940 w pliku nagłówkowym stdio.h. 94 00:04:10,940 --> 00:04:14,010 Anyway, korzyści z dobrego ukrywania informacji jest to, że 95 00:04:14,010 --> 00:04:16,820 a programy piszesz są izolowane od wszelkich zmian w 96 00:04:16,820 --> 00:04:20,209 Kod z wykonania funkcji bibliotecznych. 97 00:04:20,209 --> 00:04:22,880 Jeśli realizacja printf zmian, nie trzeba 98 00:04:22,880 --> 00:04:26,310 iść i zmienić wszystkie programy, które korzystają z printf. 99 00:04:26,310 --> 00:04:28,450 >> Więc skąd realizacja iść? 100 00:04:28,450 --> 00:04:31,020 Cóż, znowu, zgodnie z konwencją, realizacja idzie w 101 00:04:31,020 --> 00:04:34,310 Plik z rozszerzeniem. c pliku. 102 00:04:34,310 --> 00:04:36,820 Zazwyczaj, pliki nagłówkowe i pliki wdrożeniowe iść 103 00:04:36,820 --> 00:04:39,380 w ręku, więc jeśli zadeklarował kilka nowego łańcucha 104 00:04:39,380 --> 00:04:42,950 funkcje w MyString.h, wtedy zdefiniować wszystkie 105 00:04:42,950 --> 00:04:46,960 te funkcje w mystring. c. 106 00:04:46,960 --> 00:04:49,230 Tak więc nagłówek i wdrożenie pliki są następnie 107 00:04:49,230 --> 00:04:52,230 kompilowane, tworzenie plików wynikowych, które następnie są połączone 108 00:04:52,230 --> 00:04:55,360 razem, by produkować plik biblioteki binarnego. 109 00:04:55,360 --> 00:04:58,520 Pisarz biblioteka będzie wysłać plik binarny wzdłuż 110 00:04:58,520 --> 00:05:00,720 z plików nagłówkowych do programistów, którzy chcą korzystać z 111 00:05:00,720 --> 00:05:02,280 biblioteka. 112 00:05:02,280 --> 00:05:04,640 W tym momencie, że pliki. C jego stosowanie 113 00:05:04,640 --> 00:05:07,840 potrzebne, za wyjątkiem rekompilacji biblioteki od podstaw, więc 114 00:05:07,840 --> 00:05:10,270 oni często opuszczone. 115 00:05:10,270 --> 00:05:13,670 >> Do korzystania z biblioteki C, musisz zrobić dwie rzeczy. 116 00:05:13,670 --> 00:05:16,890 Po pierwsze, należy # include biblioteczne pliki nagłówkowe oraz 117 00:05:16,890 --> 00:05:18,700 kodu źródłowego, w którym chcesz używać 118 00:05:18,700 --> 00:05:20,530 Biblioteki code. 119 00:05:20,530 --> 00:05:23,200 Informuje to kompilator wszystkich deklaracji 120 00:05:23,200 --> 00:05:26,890 funkcje, zmienne, elemencie, et cetera, obecne w 121 00:05:26,890 --> 00:05:30,510 tak że pliki nagłówkowe kompilator można, mieć pewność, że 122 00:05:30,510 --> 00:05:33,280 używasz biblioteczne zasoby w sposób właściwy, 123 00:05:33,280 --> 00:05:37,120 a dwa, wygenerować odpowiedni kod montażu. 124 00:05:37,120 --> 00:05:38,910 W zależności od miejsca Biblioteki pliki nagłówkowe są 125 00:05:38,910 --> 00:05:42,720 położony, # include składnia różna. 126 00:05:42,720 --> 00:05:44,880 Jeśli pliki nagłówkowe znajdują się w systemowym 127 00:05:44,880 --> 00:05:46,690 domyślna to katalog - 128 00:05:46,690 --> 00:05:48,780 zazwyczaj usr/include-- 129 00:05:48,780 --> 00:05:52,200 wtedy kąt składni wsporniki, używany jest w # to 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 Jednakże, jeśli pliki nagłówkowe znajdują się w tym samym 132 00:05:59,540 --> 00:06:02,960 katalogu jako własnego kodu, podwójne składnia cytat 133 00:06:02,960 --> 00:06:04,870 używane, jak w # "to" mylib.h. 134 00:06:08,630 --> 00:06:11,220 >> Drugą rzeczą jaką musisz zrobić, to połączyć w binarnym 135 00:06:11,220 --> 00:06:13,760 plik biblioteki podczas kompilacji kodu. 136 00:06:13,760 --> 00:06:15,810 Jest to bardzo ważny etap. 137 00:06:15,810 --> 00:06:17,540 Pamiętasz naszą wcześniejszą dyskusję o tym, jak nagłówek 138 00:06:17,540 --> 00:06:20,200 pliki nie zawierają kod realizacji? 139 00:06:20,200 --> 00:06:22,200 Jeśli zapomnisz ten krok, dostaniesz błędy o 140 00:06:22,200 --> 00:06:24,990 niezdefiniowane symbole odwoływać w kodzie. 141 00:06:24,990 --> 00:06:29,580 Aby rozwiązać ten problem, należy użyć-l flag a zaraz 142 00:06:29,580 --> 00:06:32,320 bez przestrzeni przez nazwy biblioteki. 143 00:06:32,320 --> 00:06:35,410 W wielu systemach, w tym urządzenia, C standardowa 144 00:06:35,410 --> 00:06:38,350 Biblioteki są automatycznie połączone dla Ciebie. 145 00:06:38,350 --> 00:06:41,700 Jednak biblioteka matematyczna jest czasem dołączane osobno 146 00:06:41,700 --> 00:06:44,600 a może powinny być powiązane z-lm. 147 00:06:44,600 --> 00:06:47,760 Na urządzeniu, dbamy o to dla ciebie, a także 148 00:06:47,760 --> 00:06:52,170 powiązać CS50 bibliotekę-lcs50. 149 00:06:52,170 --> 00:06:54,540 Możesz zobaczyć to wszystko na urządzeniu podczas uruchamiania make. 150 00:06:57,620 --> 00:06:59,130 >> Teraz powinieneś mieć wiedzę potrzebną do korzystania 151 00:06:59,130 --> 00:07:02,150 bibliotek w C Baw zwiedzania. 152 00:07:02,150 --> 00:07:05,880 Nazywam się Nate Hardison i to CS50.