[Powered by Google Translate] NATE Hardison: Bei der Programmierung ist eine Bibliothek eine Sammlung von
verwandten vordefinierte Code.
Bibliotheken sind, wie wir als Programmierer, gemeinsame und
hilfreich Code miteinander, mit den verschiedenen Programmen wir
schreiben, und auch mit den verschiedenen Prozessen an
Gleichzeitig auf unseren Computern.
>> Lassen Sie uns ein wenig.
Eines der häufigsten Funktionen, die Sie haben wahrscheinlich
wurde mit der Funktion printf.
Jetzt, printf ist nicht irgendeine magische Funktion, die ist schon
in den Computer fest codiert -
vielmehr ist es ein Teil der C Standard Libraries, die sind
eine Sammlung von Funktionen, die dem Motherboard
C-Programmiersprache.
Da printf nicht in den Computer eingebaut, bedeutet dies, dass
es gab einige Programmierer, die tatsächlich in ging und schrieb die
printf Funktion und gebündelt es mit dem Rest des Standards
Bibliotheken, so dass zukünftige Programmierer müsste nicht
duplizieren Sie die Anstrengung.
Und wir sind sicher dankbar, dass das der Fall ist, weil zu überprüfen
Sie heraus, wie viel Code es tatsächlich dauert, bis printf umzusetzen.
>> Die C Standard Libraries, von denen printf ist ein Teil sind
eines der wichtigsten Werkzeuge, die Sie
haben bei der Bewältigung CS50.
Neben der Eingabe-Ausgabe-Bibliothek, in der
printf lebt, gibt es eine Reihe von anderen Bibliotheken,
Sie werden wahrscheinlich nutzen über den Verlauf der CS50.
Zum Beispiel hat die Zeichenfolge zu Bibliotheksfunktionen
Vergleichen C-Strings, bekommen ihre Länge, und verketten sie.
Und die Mathematik-Bibliothek gibt Ihnen hilfreiche
Konstanten wie pi und e.
Nun zu den Standard-Bibliotheken von anderen Programmiersprachen im Vergleich
Sprachen, sind die C Standard Libraries wirklich klein,
aber sie haben noch eine erhebliche Menge an Zeug.
Und das ist nicht zu sagen, dass die Standard-Bibliotheken die sind
Nur C-Bibliotheken, es gibt viele mehr gibt in der
Welt für Sie zu nutzen, einschließlich der CS50-Bibliothek,
Kartographie Bibliotheken mit Ver-und Entschlüsselung
Funktionen, Bibliotheken mit Funktionen zu codieren und
Wiedergabe von Video, und so weiter.
>> Dies bringt uns zu einem wichtigen beiseite.
Einer der wesentlichen Fähigkeiten Engineering Kenntnis der
Werkzeuge in der Toolbox, so dass Sie verwenden können,
Sie und vermeiden Sie das Rad neu erfinden, wenn
Sie haben zu tun.
Als Programmierer sind Bibliotheken eine der wichtigsten
Werkzeuge, die wir haben.
Wenn du dich vor einer Aufgabe, die langwierig oder scheint
alltäglich, wie die Suche nach der Länge eines C-String, Sie
sollten Sie sich fragen, ob es der Fall sein könnte, dass
jemand schon das gleiche getan.
Die Chancen stehen gut, dass man einige finden
Hilfe innerhalb einer Bibliothek.
>> So in technischer Hinsicht ist eine Bibliothek eine binäre Datei, die
die durch Verknüpfung eine Sammlung von produziert
Objekt-Dateien mithilfe eines Tools namens Sie
ahnen es, der Linker.
Object Dateien sind diejenigen. O Dateien, die Sie, wenn Sie
kompilieren C-Quellcode.
Wenn Programmierer Bibliotheken schreiben, sie typischerweise
trennen ihre C-Code in zwei Arten von Dateien:
Header-Dateien und Umsetzung Dateien.
Eine Header-Datei per Konvention wird die. H Dateierweiterung angegeben,
und es enthält Code, der die Bibliothek erklärt
Ressourcen, die für Sie zu bedienen sind.
Zu diesen Ressourcen gehören Funktionen, Variablen, Strukturen,
Typdefinitionen und so weiter, und sie zusammengenommen
gemeinhin als Schnittstelle bezeichnet.
In der Tat, wenn Sie jemals fragen, was ist in einer Bibliothek,
die Header-Dateien sind der Ort, um zu schauen.
>> Zum Beispiel können Sie ziehen usr / include / stdio.h und überprüfen
alles, was Sie jemals wissen wollten über
die Standard-io-Bibliothek.
Es gibt eine Menge Sachen hier, und es kann ein bisschen dauern
Zeit, um durch zu waten.
Doch mit Google und den manpages, ist dies die
Ort, um zu gehen, wenn Sie sich fragen, wie die Standard-I / O
Library-Funktionen arbeiten.
So ein Schlüssel ist hier zu beachten ist allerdings, dass die Header-Dateien
typischerweise nicht enthalten Funktionsdefinitionen -
das heißt, die tatsächliche Funktion Implementierungen.
Dies ist eine Veranschaulichung eines wichtigen Informatik
Prinzip genannt information hiding, auch bei bezeichnet
mal als Kapselung.
>> Da die Benutzer oder den Client einer Bibliothek, die Sie nicht brauchen, um
wissen, über die Interna der Bibliothek
Um es zu benutzen.
Angemeldet sehen printf nur ein bisschen her?
Hatten Sie jemals den eigentlichen Code schon einmal gesehen?
Nun, ich nehme an, dass Sie nicht haben, auch wenn Sie vielleicht
verwendet printf Tonnen Zeiten haben.
Alles, was Sie musste wissen, war die Funktion Erklärung vorhanden
in der Header-Datei stdio.h.
Auf jeden Fall ist der Nutzen von guter Information Hiding, dass Sie
und die Programme, die Sie schreiben, sind von Änderungen in isolierten
der Code für die Ausführung des Bibliotheksfunktionen.
Wenn die Implementierung von printf Veränderungen, müssen Sie nicht
zu gehen und ändern Sie alle Ihre Programme, die printf verwenden.
>> Woher kommt also die Umsetzung gehen?
Nun, wieder durch Konvention, geht die Umsetzung in eine
Datei mit der. c Dateiendung.
Normalerweise gehen Header-Dateien und Implementierungsdateien Hand
in der Hand, wenn Sie deklariert haben eine Reihe von neuen String
Funktionen in mystring.h, dann werden Sie definieren alle
diese Funktionen in mystring. c.
Also die Header und Implementierung Dateien sind dann
zusammengestellt, Erstellen von Objekt-Dateien, die dann miteinander verbunden sind
zusammen, um zu produzieren das binäre Library-Datei.
Die Bibliothek Schriftsteller dann versenden die binäre Datei zusammen
mit den Header-Dateien für Programmierer, die verwenden möchten
die Bibliothek.
An diesem Punkt sind die. C Umsetzung Dateien nicht
benötigt werden, außer um die Bibliothek von Grund auf neu kompilieren, so
sie sind oft ausgelassen.
>> Um die C-Bibliothek verwenden, müssen Sie zwei Dinge tun.
Zunächst müssen Sie # include der Bibliothek Header-Dateien und die
Quellcodedatei, wo Sie verwenden möchten
der Bibliothek Code.
Dieser informiert den Compiler über alle Erklärungen
Funktionen, Variablen, Strukturen, et cetera, in der
Header-Dateien, so dass der Compiler ein, sicherzustellen, dass
Sie verwenden die Bibliothek der Ressourcen in der richtigen Weise,
und zwei, erzeugen die entsprechende Assembler-Code.
Je nachdem, wo der Bibliothek Header-Dateien sind
befindet, ändert sich die # include-Syntax.
Wenn die Header-Dateien sind im System befindet
Standardmäßig gehören directory -
typischerweise usr/include--
dann die spitzen Klammern Syntax verwendet wird, wie in # umfassen
.
Wenn jedoch die Header-Dateien werden in derselben befindet
Verzeichnis wie Ihre eigenen Code, ist das doppelte Anführungszeichen Syntax
verwendet, wie in # "mylib.h" umfassen.
>> Das zweite, was Sie tun müssen, ist in der binären Verknüpfung
Library-Datei, wenn Sie Ihren Code zu kompilieren.
Dies ist ein super wichtiger Schritt.
Denken Sie an unsere frühere Diskussion darüber, wie header
Dateien enthalten keine Umsetzung Code?
Wenn Sie diesen Schritt auslassen, werden Sie Fehlermeldungen über zu bekommen
undefinierten Symbolen in Ihrem Code verwiesen.
Um dieses Problem zu lösen, verwenden Sie die Option-l, unmittelbar gefolgt
ohne Abstand von der Name der Bibliothek.
Auf vielen Systemen, einschließlich des Geräts, die C Standard
Bibliotheken werden automatisch für Sie verbunden.
Allerdings ist die Mathematik-Bibliothek manchmal gebündelt getrennt
und vielleicht müssen mit-lm verknüpft werden.
Auf dem Gerät übernehmen wir das für Sie, und wir auch
verbinden die CS50-Bibliothek mit-LCS50.
Sie können all dies auf dem Gerät, wenn Sie make sehen.
>> Nun sollten Sie das Wissen, das Sie brauchen, um zu verwenden
Bibliotheken in C Viel Spaß beim Entdecken.
Mein Name ist Nate Hardison, und dies ist CS50.