1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] NATE Hardison: Bei der Programmierung ist eine Bibliothek eine Sammlung von 2 00:00:09,470 --> 00:00:11,380 verwandten vordefinierte Code. 3 00:00:11,380 --> 00:00:14,350 Bibliotheken sind, wie wir als Programmierer, gemeinsame und 4 00:00:14,350 --> 00:00:16,930 hilfreich Code miteinander, mit den verschiedenen Programmen wir 5 00:00:16,930 --> 00:00:19,470 schreiben, und auch mit den verschiedenen Prozessen an 6 00:00:19,470 --> 00:00:21,380 Gleichzeitig auf unseren Computern. 7 00:00:21,380 --> 00:00:23,000 >> Lassen Sie uns ein wenig. 8 00:00:23,000 --> 00:00:25,070 Eines der häufigsten Funktionen, die Sie haben wahrscheinlich 9 00:00:25,070 --> 00:00:27,500 wurde mit der Funktion printf. 10 00:00:27,500 --> 00:00:29,820 Jetzt, printf ist nicht irgendeine magische Funktion, die ist schon 11 00:00:29,820 --> 00:00:31,670 in den Computer fest codiert - 12 00:00:31,670 --> 00:00:34,320 vielmehr ist es ein Teil der C Standard Libraries, die sind 13 00:00:34,320 --> 00:00:36,080 eine Sammlung von Funktionen, die dem Motherboard 14 00:00:36,080 --> 00:00:38,050 C-Programmiersprache. 15 00:00:38,050 --> 00:00:40,920 Da printf nicht in den Computer eingebaut, bedeutet dies, dass 16 00:00:40,920 --> 00:00:43,520 es gab einige Programmierer, die tatsächlich in ging und schrieb die 17 00:00:43,520 --> 00:00:46,310 printf Funktion und gebündelt es mit dem Rest des Standards 18 00:00:46,310 --> 00:00:48,880 Bibliotheken, so dass zukünftige Programmierer müsste nicht 19 00:00:48,880 --> 00:00:50,310 duplizieren Sie die Anstrengung. 20 00:00:50,310 --> 00:00:52,620 Und wir sind sicher dankbar, dass das der Fall ist, weil zu überprüfen 21 00:00:52,620 --> 00:00:54,710 Sie heraus, wie viel Code es tatsächlich dauert, bis printf umzusetzen. 22 00:00:59,590 --> 00:01:02,860 >> Die C Standard Libraries, von denen printf ist ein Teil sind 23 00:01:02,860 --> 00:01:04,480 eines der wichtigsten Werkzeuge, die Sie 24 00:01:04,480 --> 00:01:06,770 haben bei der Bewältigung CS50. 25 00:01:06,770 --> 00:01:08,780 Neben der Eingabe-Ausgabe-Bibliothek, in der 26 00:01:08,780 --> 00:01:11,370 printf lebt, gibt es eine Reihe von anderen Bibliotheken, 27 00:01:11,370 --> 00:01:14,230 Sie werden wahrscheinlich nutzen über den Verlauf der CS50. 28 00:01:14,230 --> 00:01:16,730 Zum Beispiel hat die Zeichenfolge zu Bibliotheksfunktionen 29 00:01:16,730 --> 00:01:20,960 Vergleichen C-Strings, bekommen ihre Länge, und verketten sie. 30 00:01:20,960 --> 00:01:22,410 Und die Mathematik-Bibliothek gibt Ihnen hilfreiche 31 00:01:22,410 --> 00:01:25,062 Konstanten wie pi und e. 32 00:01:25,062 --> 00:01:27,650 Nun zu den Standard-Bibliotheken von anderen Programmiersprachen im Vergleich 33 00:01:27,650 --> 00:01:31,190 Sprachen, sind die C Standard Libraries wirklich klein, 34 00:01:31,190 --> 00:01:34,060 aber sie haben noch eine erhebliche Menge an Zeug. 35 00:01:34,060 --> 00:01:36,370 Und das ist nicht zu sagen, dass die Standard-Bibliotheken die sind 36 00:01:36,370 --> 00:01:39,020 Nur C-Bibliotheken, es gibt viele mehr gibt in der 37 00:01:39,020 --> 00:01:42,460 Welt für Sie zu nutzen, einschließlich der CS50-Bibliothek, 38 00:01:42,460 --> 00:01:45,150 Kartographie Bibliotheken mit Ver-und Entschlüsselung 39 00:01:45,150 --> 00:01:48,000 Funktionen, Bibliotheken mit Funktionen zu codieren und 40 00:01:48,000 --> 00:01:50,970 Wiedergabe von Video, und so weiter. 41 00:01:50,970 --> 00:01:53,190 >> Dies bringt uns zu einem wichtigen beiseite. 42 00:01:53,190 --> 00:01:55,500 Einer der wesentlichen Fähigkeiten Engineering Kenntnis der 43 00:01:55,500 --> 00:01:58,090 Werkzeuge in der Toolbox, so dass Sie verwenden können, 44 00:01:58,090 --> 00:01:59,850 Sie und vermeiden Sie das Rad neu erfinden, wenn 45 00:01:59,850 --> 00:02:01,510 Sie haben zu tun. 46 00:02:01,510 --> 00:02:04,120 Als Programmierer sind Bibliotheken eine der wichtigsten 47 00:02:04,120 --> 00:02:05,520 Werkzeuge, die wir haben. 48 00:02:05,520 --> 00:02:08,520 Wenn du dich vor einer Aufgabe, die langwierig oder scheint 49 00:02:08,520 --> 00:02:11,940 alltäglich, wie die Suche nach der Länge eines C-String, Sie 50 00:02:11,940 --> 00:02:14,020 sollten Sie sich fragen, ob es der Fall sein könnte, dass 51 00:02:14,020 --> 00:02:16,520 jemand schon das gleiche getan. 52 00:02:16,520 --> 00:02:17,760 Die Chancen stehen gut, dass man einige finden 53 00:02:17,760 --> 00:02:20,110 Hilfe innerhalb einer Bibliothek. 54 00:02:20,110 --> 00:02:23,260 >> So in technischer Hinsicht ist eine Bibliothek eine binäre Datei, die 55 00:02:23,260 --> 00:02:26,210 die durch Verknüpfung eine Sammlung von produziert 56 00:02:26,210 --> 00:02:28,880 Objekt-Dateien mithilfe eines Tools namens Sie 57 00:02:28,880 --> 00:02:31,010 ahnen es, der Linker. 58 00:02:31,010 --> 00:02:33,830 Object Dateien sind diejenigen. O Dateien, die Sie, wenn Sie 59 00:02:33,830 --> 00:02:35,860 kompilieren C-Quellcode. 60 00:02:35,860 --> 00:02:38,420 Wenn Programmierer Bibliotheken schreiben, sie typischerweise 61 00:02:38,420 --> 00:02:41,560 trennen ihre C-Code in zwei Arten von Dateien: 62 00:02:41,560 --> 00:02:44,880 Header-Dateien und Umsetzung Dateien. 63 00:02:44,880 --> 00:02:49,820 Eine Header-Datei per Konvention wird die. H Dateierweiterung angegeben, 64 00:02:49,820 --> 00:02:51,940 und es enthält Code, der die Bibliothek erklärt 65 00:02:51,940 --> 00:02:55,120 Ressourcen, die für Sie zu bedienen sind. 66 00:02:55,120 --> 00:02:58,830 Zu diesen Ressourcen gehören Funktionen, Variablen, Strukturen, 67 00:02:58,830 --> 00:03:01,980 Typdefinitionen und so weiter, und sie zusammengenommen 68 00:03:01,980 --> 00:03:04,620 gemeinhin als Schnittstelle bezeichnet. 69 00:03:04,620 --> 00:03:07,280 In der Tat, wenn Sie jemals fragen, was ist in einer Bibliothek, 70 00:03:07,280 --> 00:03:09,580 die Header-Dateien sind der Ort, um zu schauen. 71 00:03:09,580 --> 00:03:14,030 >> Zum Beispiel können Sie ziehen usr / include / stdio.h und überprüfen 72 00:03:14,030 --> 00:03:16,210 alles, was Sie jemals wissen wollten über 73 00:03:16,210 --> 00:03:18,570 die Standard-io-Bibliothek. 74 00:03:18,570 --> 00:03:20,610 Es gibt eine Menge Sachen hier, und es kann ein bisschen dauern 75 00:03:20,610 --> 00:03:22,420 Zeit, um durch zu waten. 76 00:03:22,420 --> 00:03:25,840 Doch mit Google und den manpages, ist dies die 77 00:03:25,840 --> 00:03:28,060 Ort, um zu gehen, wenn Sie sich fragen, wie die Standard-I / O 78 00:03:28,060 --> 00:03:30,460 Library-Funktionen arbeiten. 79 00:03:30,460 --> 00:03:33,910 So ein Schlüssel ist hier zu beachten ist allerdings, dass die Header-Dateien 80 00:03:33,910 --> 00:03:36,740 typischerweise nicht enthalten Funktionsdefinitionen - 81 00:03:36,740 --> 00:03:40,020 das heißt, die tatsächliche Funktion Implementierungen. 82 00:03:40,020 --> 00:03:42,470 Dies ist eine Veranschaulichung eines wichtigen Informatik 83 00:03:42,470 --> 00:03:45,700 Prinzip genannt information hiding, auch bei bezeichnet 84 00:03:45,700 --> 00:03:48,960 mal als Kapselung. 85 00:03:48,960 --> 00:03:52,630 >> Da die Benutzer oder den Client einer Bibliothek, die Sie nicht brauchen, um 86 00:03:52,630 --> 00:03:54,230 wissen, über die Interna der Bibliothek 87 00:03:54,230 --> 00:03:55,380 Um es zu benutzen. 88 00:03:55,380 --> 00:03:57,800 Angemeldet sehen printf nur ein bisschen her? 89 00:03:57,800 --> 00:04:00,275 Hatten Sie jemals den eigentlichen Code schon einmal gesehen? 90 00:04:00,275 --> 00:04:02,535 Nun, ich nehme an, dass Sie nicht haben, auch wenn Sie vielleicht 91 00:04:02,535 --> 00:04:05,090 verwendet printf Tonnen Zeiten haben. 92 00:04:05,090 --> 00:04:08,110 Alles, was Sie musste wissen, war die Funktion Erklärung vorhanden 93 00:04:08,110 --> 00:04:10,940 in der Header-Datei stdio.h. 94 00:04:10,940 --> 00:04:14,010 Auf jeden Fall ist der Nutzen von guter Information Hiding, dass Sie 95 00:04:14,010 --> 00:04:16,820 und die Programme, die Sie schreiben, sind von Änderungen in isolierten 96 00:04:16,820 --> 00:04:20,209 der Code für die Ausführung des Bibliotheksfunktionen. 97 00:04:20,209 --> 00:04:22,880 Wenn die Implementierung von printf Veränderungen, müssen Sie nicht 98 00:04:22,880 --> 00:04:26,310 zu gehen und ändern Sie alle Ihre Programme, die printf verwenden. 99 00:04:26,310 --> 00:04:28,450 >> Woher kommt also die Umsetzung gehen? 100 00:04:28,450 --> 00:04:31,020 Nun, wieder durch Konvention, geht die Umsetzung in eine 101 00:04:31,020 --> 00:04:34,310 Datei mit der. c Dateiendung. 102 00:04:34,310 --> 00:04:36,820 Normalerweise gehen Header-Dateien und Implementierungsdateien Hand 103 00:04:36,820 --> 00:04:39,380 in der Hand, wenn Sie deklariert haben eine Reihe von neuen String 104 00:04:39,380 --> 00:04:42,950 Funktionen in mystring.h, dann werden Sie definieren alle 105 00:04:42,950 --> 00:04:46,960 diese Funktionen in mystring. c. 106 00:04:46,960 --> 00:04:49,230 Also die Header und Implementierung Dateien sind dann 107 00:04:49,230 --> 00:04:52,230 zusammengestellt, Erstellen von Objekt-Dateien, die dann miteinander verbunden sind 108 00:04:52,230 --> 00:04:55,360 zusammen, um zu produzieren das binäre Library-Datei. 109 00:04:55,360 --> 00:04:58,520 Die Bibliothek Schriftsteller dann versenden die binäre Datei zusammen 110 00:04:58,520 --> 00:05:00,720 mit den Header-Dateien für Programmierer, die verwenden möchten 111 00:05:00,720 --> 00:05:02,280 die Bibliothek. 112 00:05:02,280 --> 00:05:04,640 An diesem Punkt sind die. C Umsetzung Dateien nicht 113 00:05:04,640 --> 00:05:07,840 benötigt werden, außer um die Bibliothek von Grund auf neu kompilieren, so 114 00:05:07,840 --> 00:05:10,270 sie sind oft ausgelassen. 115 00:05:10,270 --> 00:05:13,670 >> Um die C-Bibliothek verwenden, müssen Sie zwei Dinge tun. 116 00:05:13,670 --> 00:05:16,890 Zunächst müssen Sie # include der Bibliothek Header-Dateien und die 117 00:05:16,890 --> 00:05:18,700 Quellcodedatei, wo Sie verwenden möchten 118 00:05:18,700 --> 00:05:20,530 der Bibliothek Code. 119 00:05:20,530 --> 00:05:23,200 Dieser informiert den Compiler über alle Erklärungen 120 00:05:23,200 --> 00:05:26,890 Funktionen, Variablen, Strukturen, et cetera, in der 121 00:05:26,890 --> 00:05:30,510 Header-Dateien, so dass der Compiler ein, sicherzustellen, dass 122 00:05:30,510 --> 00:05:33,280 Sie verwenden die Bibliothek der Ressourcen in der richtigen Weise, 123 00:05:33,280 --> 00:05:37,120 und zwei, erzeugen die entsprechende Assembler-Code. 124 00:05:37,120 --> 00:05:38,910 Je nachdem, wo der Bibliothek Header-Dateien sind 125 00:05:38,910 --> 00:05:42,720 befindet, ändert sich die # include-Syntax. 126 00:05:42,720 --> 00:05:44,880 Wenn die Header-Dateien sind im System befindet 127 00:05:44,880 --> 00:05:46,690 Standardmäßig gehören directory - 128 00:05:46,690 --> 00:05:48,780 typischerweise usr/include-- 129 00:05:48,780 --> 00:05:52,200 dann die spitzen Klammern Syntax verwendet wird, wie in # umfassen 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 Wenn jedoch die Header-Dateien werden in derselben befindet 132 00:05:59,540 --> 00:06:02,960 Verzeichnis wie Ihre eigenen Code, ist das doppelte Anführungszeichen Syntax 133 00:06:02,960 --> 00:06:04,870 verwendet, wie in # "mylib.h" umfassen. 134 00:06:08,630 --> 00:06:11,220 >> Das zweite, was Sie tun müssen, ist in der binären Verknüpfung 135 00:06:11,220 --> 00:06:13,760 Library-Datei, wenn Sie Ihren Code zu kompilieren. 136 00:06:13,760 --> 00:06:15,810 Dies ist ein super wichtiger Schritt. 137 00:06:15,810 --> 00:06:17,540 Denken Sie an unsere frühere Diskussion darüber, wie header 138 00:06:17,540 --> 00:06:20,200 Dateien enthalten keine Umsetzung Code? 139 00:06:20,200 --> 00:06:22,200 Wenn Sie diesen Schritt auslassen, werden Sie Fehlermeldungen über zu bekommen 140 00:06:22,200 --> 00:06:24,990 undefinierten Symbolen in Ihrem Code verwiesen. 141 00:06:24,990 --> 00:06:29,580 Um dieses Problem zu lösen, verwenden Sie die Option-l, unmittelbar gefolgt 142 00:06:29,580 --> 00:06:32,320 ohne Abstand von der Name der Bibliothek. 143 00:06:32,320 --> 00:06:35,410 Auf vielen Systemen, einschließlich des Geräts, die C Standard 144 00:06:35,410 --> 00:06:38,350 Bibliotheken werden automatisch für Sie verbunden. 145 00:06:38,350 --> 00:06:41,700 Allerdings ist die Mathematik-Bibliothek manchmal gebündelt getrennt 146 00:06:41,700 --> 00:06:44,600 und vielleicht müssen mit-lm verknüpft werden. 147 00:06:44,600 --> 00:06:47,760 Auf dem Gerät übernehmen wir das für Sie, und wir auch 148 00:06:47,760 --> 00:06:52,170 verbinden die CS50-Bibliothek mit-LCS50. 149 00:06:52,170 --> 00:06:54,540 Sie können all dies auf dem Gerät, wenn Sie make sehen. 150 00:06:57,620 --> 00:06:59,130 >> Nun sollten Sie das Wissen, das Sie brauchen, um zu verwenden 151 00:06:59,130 --> 00:07:02,150 Bibliotheken in C Viel Spaß beim Entdecken. 152 00:07:02,150 --> 00:07:05,880 Mein Name ist Nate Hardison, und dies ist CS50.