[Powered by Google Translate] NATE Hardison: Bij het programmeren, een bibliotheek is een verzameling van
gerelateerde vooraf geschreven code.
Bibliotheken zijn hoe wij als programmeurs, hebben gemeenschappelijke en
behulpzaam code met elkaar, met de verschillende programma's die we
schrijven, en zelfs met de verschillende processen draait op
dezelfde tijd op onze computers.
>> Laten we eens onderzoeken een beetje.
Een van de meest voorkomende functies die u hebt waarschijnlijk
zijn met behulp van de printf functie.
Nu, printf is niet een magische functie die is geweest
vast gecodeerd in de computer -
Integendeel, het is een deel van de C Standaard bibliotheken, die
een verzameling van functies die bij de
C programmeertaal.
Omdat printf is niet ingebouwd in de computer, dat betekent dat
was er een programmeur die daadwerkelijk ging naar binnen en schreef de
printf functie en gebundeld met de rest van de standaard
bibliotheken zodat toekomstige programmeurs zou niet te
dupliceren de inspanning.
En we zijn er zeker van dankbaar dat dat het geval is, want controleren
hoeveel code het eigenlijk nodig is om printf implementeren.
>> De C Standard bibliotheken, waarvan printf deel uitmaakt, zijn
een van de belangrijkste tools die u
hebben in de aanpak van CS50.
Naast de input-output bibliotheek waar
printf leven, zijn er een heleboel andere bibliotheken die
zul je waarschijnlijk gebruik maken van in de loop van CS50.
Bijvoorbeeld, de string bibliotheek functies
Vergelijk C strings, krijgen hun lengte, en elkaar plakken.
En de wiskunde bibliotheek biedt u behulpzaam
constanten, zoals pi en e.
Nu vergeleken met de standaard bibliotheken van andere programmering
talen, de C Standaard bibliotheken zijn erg klein,
maar ze hebben nog steeds een aanzienlijke hoeveelheid spullen.
En dat is niet om te zeggen dat de standaard bibliotheken zijn de
alleen C bibliotheken, er zijn veel meer die er zijn in de
wereld voor u te gebruiken, met inbegrip van de CS50 Bibliotheek,
cartografie bibliotheken met encryptie en decryptie
functies, bibliotheken met functies voor het coderen en
afspelen video, enzovoort.
>> Dit brengt ons bij een belangrijke opzij.
Een van de essentiële vaardigheden van engineering is het kennen van de
tools beschikbaar in uw gereedschapskist, zodat u kunt gebruik maken van
hen en te voorkomen dat het wiel opnieuw uitvinden, tenzij
je moet om dit te doen.
Zoals programmeurs bibliotheken zijn een van de belangrijkste
instrumenten die we hebben.
Als je merkt dat je geconfronteerd met een taak die lijkt vervelend of
gebruikelijk, zoals het vinden van de lengte van een C string, je
moeten afvragen of het misschien het geval kunnen zijn dat
iemand al hetzelfde gedaan voor.
De kans is groot dat je wel wat vinden
helpen in een bibliotheek.
>> Dus in technische termen, een bibliotheek is een binair bestand dat
is geproduceerd door het koppelen van een verzameling
object bestanden met behulp van een tool genaamd, kunt u
raadt het al, de linker.
Object bestanden zijn die. O bestanden die je krijgt als je
compileren C-broncode.
Als programmeurs bibliotheken schrijven, ze meestal
scheiden van hun C-code in twee typen bestanden:
header-bestanden en implementatie bestanden.
Een header-bestand volgens afspraak krijgt de. H bestandsextensie,
en het bevat code die de bibliotheek verklaart
middelen die beschikbaar zijn voor u om te gebruiken.
Deze middelen zijn onder functies, variabelen, structs,
typedefinities, enzovoort, en samen zijn
gewoonlijk aangeduid als de interface.
In feite, als je ooit afvraagt ​​wat er in een bibliotheek,
de header-bestanden zijn de plek om te kijken.
>> Bijvoorbeeld, kunt u omhoog trekken usr / include / stdio.h en controleer
alles wat je altijd al wilde weten over
de standaard io bibliotheek.
Er is een heleboel dingen hier, en het kan een beetje van
tijd om te waden door.
Echter, samen met Google en de manpages, is de
Plaats om te gaan als je je afvraagt ​​hoe de standaard I / O
bibliotheek functies werken.
Dus een belangrijk ding om hier op te merken, is echter dat header bestanden
meestal niet bevatten functiedefinities -
dat wil zeggen de eigenlijke functie implementaties.
Dit is een illustratie van een belangrijk informatica
beginsel bijeengeroepen informatie verbergen, ook wel op
maal inkapseling.
>> Als de gebruiker of de klant van een bibliotheek, hoeft u niet te
weten over de werking van de bibliotheek in
om het te gebruiken.
Vergeet niet het zien van printf gewoon een beetje geleden?
Had je ooit de werkelijke code voor?
Nou, ik neem aan dat je niet, ook al heb je misschien
gebruikt printf ton keren.
Alles wat je moest weten was de functie verklaring aanwezig
in de stdio.h header bestand.
Hoe dan ook, het voordeel van goede informatie verbergen, is dat je
en de programma's die u schrijft zijn geïsoleerd van eventuele veranderingen in
de code van de uitvoering van de bibliotheek functies.
Indien de uitvoering van printf veranderingen, hoeft u niet
om te gaan en te veranderen van al uw programma's die printf gebruiken.
>> Dus waar komt de uitvoering gaan?
Nou, nogmaals, volgens afspraak, de uitvoering gaat in een
bestand met de. c bestandsextensie.
Meestal header-bestanden en implementatie bestanden gaan hand
in de hand, dus als je hebt verklaard een hoop nieuwe string
functies in mystring.h, dan zul je vast al
die functies in MyString. c.
Dus dan is de header en de implementatie-bestanden zijn vervolgens
samengesteld, het creëren van object bestanden die vervolgens worden gekoppeld
samen om de binaire bibliotheek bestand te maken.
De bibliotheek schrijver zal dan het schip de binaire bestand samen
met de header-bestanden voor programmeurs die willen gebruiken
de bibliotheek.
Op dit punt, de. Uitvoering c bestanden niet
nodig, behalve om de bibliotheek helemaal opnieuw compileren, zodat
ze zijn vaak weggelaten.
>> Om de C-bibliotheek te gebruiken, moet u twee dingen doen.
Ten eerste moet je # include van de bibliotheek header-bestanden en de
broncode bestand waar u wenst te gebruiken
van de bibliotheek-code.
Deze informeert de samensteller van alle van de verklaringen van
functies, variabelen, structs, et cetera, aanwezig in het
header bestanden, zodat de compiler kan men, verzekeren dat
u gebruik maakt van de bibliotheek middelen op de juiste manier,
en twee, het genereren van de juiste assembly code.
Afhankelijk van waar de bibliotheek header-bestanden zijn
gelegen, de # include syntax varieert.
Als de header bevinden zich in het systeem
Standaard zijn onder andere directory -
typisch, usr/include--
dan de hoekbeugels syntax wordt gebruikt, zoals in # include
.
Indien echter de header bevinden zich in dezelfde
directory als uw eigen code, de dubbele aanhalingstekens syntax is
gebruikt, zoals in # include "mylib.h".
>> Het tweede wat je hoeft te doen is een link in de binaire
bibliotheekbestand wanneer u uw code te compileren.
Dit is een belangrijke stap super.
Vergeet niet onze eerdere discussie over hoe header
bestanden bevatten geen implementatie code?
Vergeet u deze stap, krijg je fouten over
undefined symbolen verwezen in uw code.
Om dit op te lossen, gebruik de-L vlag onmiddellijk gevolgd
zonder ruimte door de naam van de bibliotheek.
Voor veel systemen waaronder het apparaat, C Standard
Bibliotheken automatisch gekoppeld voor u.
Echter, de math library soms apart gebundeld
en zou moeten worden gekoppeld aan-lm.
Op het apparaat, verzorgen wij dit voor u, en we hebben ook
verbinden de CS50 bibliotheek met-lcs50.
U kunt dit allemaal op het apparaat wanneer u te maken.
>> Nu moet je de kennis die je nodig hebt om te gebruiken
bibliotheken in C. Veel plezier verkennen.
Mijn naam is Nate Hardison, en dit is CS50.