[Powered by Google Translate] Nate Hardison: En programació, una biblioteca és una col · lecció de
codi relacionat prèviament escrit.
Les biblioteques són com nosaltres, com programadors, acció comuna i
codi útil entre si, amb els diferents programes
escriure, i fins i tot amb els diferents processos en marxa
mateix temps en els nostres ordinadors.
>> Anem a explorar una mica.
Una de les funcions més comuns que vostè probablement ha
estat utilitzant és la funció printf.
Ara, printf no és una funció màgica que ha estat
en forma fixa a l'ordinador -
més aviat, és part de les biblioteques C estàndard, que són
una col · lecció de funcions que ve amb el
C llenguatge de programació.
Des printf no està integrada a l'ordinador, el que significa que
hi va haver algun programador que realment va ser i va escriure el
funció printf i embolicat amb la resta de la norma
biblioteques perquè els futurs programadors no han de
duplicar l'esforç.
I estem segurs d'agrair que aquest és el cas, a causa de verificar
per la quantitat de codi que realment es necessita per implementar printf.
>> Les biblioteques C estàndard, dels quals printf és una part, són
una de les eines més importants que
tenir en la lluita contra CS50.
A més de la biblioteca d'entrada-sortida on
printf vides, hi ha un munt d'altres biblioteques que
és probable que utilitzi en el transcurs de CS50.
Per exemple, la biblioteca de cadenes té funcions per
comparar cadenes de C, obtingui la seva longitud, i concatenar ells.
I la biblioteca de matemàtiques li dóna útil
constants, com pi i e.
Ara, en comparació amb les biblioteques estàndard de programació d'una altra
idiomes, les biblioteques C estàndard són molt petites,
però encara tenen una gran quantitat de coses.
I això no vol dir que les biblioteques estàndard són la
Només biblioteques de C, hi ha molts més per aquí a la
món per al seu ús, incloent la Biblioteca CS50,
biblioteques de cartografia amb el xifrat i el desxifrat
funcions, les biblioteques amb funcions per codificar i
reproduir vídeo, i així successivament.
>> Això ens porta a un a part important.
Una de les habilitats essencials de l'enginyeria és conèixer el
eines disponibles en la seva caixa d'eines perquè pugui utilitzar
ells i evitar reinventar la roda si no
vostè ha de fer.
Com programadors, les biblioteques són un dels més importants
eines que tenim.
Quan vostè es troba davant d'una tasca que sembla avorrit o
comú, com trobar la longitud d'una cadena C,
s'ha de preguntar si pot donar-se el cas que
algú ja ha fet el mateix abans.
El més probable és que vostè pot trobar alguns
ajuda dins d'una biblioteca.
>> Així que en termes tècnics, una biblioteca és un arxiu binari que
S'ha produït unint una col · lecció de
arxius d'objectes utilitzant una eina anomenada, vostè
endevinat, l'enllaçador.
Arxius d'objectes són aquests. Arxius o que s'obté quan es
compilar codi C font.
Quan els programadors escriure biblioteques, en general
separar el seu codi C en dos tipus d'arxius:
arxius de capçalera i els arxius d'implementació.
Un arxiu de capçalera, per convenció, se li dóna l'extensió. H arxiu,
i conté codi que declari la biblioteca de
recursos que estan disponibles per al seu ús.
Aquests recursos inclouen funcions, variables, estructures,
definicions de tipus, i així successivament, i junts, són
comunament es coneix com la interfície.
De fet, si mai es pregunten què hi ha en una biblioteca,
els arxius de capçalera són el lloc per buscar.
>> Per exemple, vostè pot aixecar usr / include / stdio.h i comprovar
tot el que vostè sempre va voler saber sobre
la biblioteca estàndard de io.
Hi ha un munt de coses aquí, i pot prendre una mica de
temps per revisar.
No obstant això, juntament amb Google i les pàgines de manual, aquest és el
lloc per anar si vostè s'està preguntant com l'estàndard d'E / S
funcions de la biblioteca funcioni.
Així que una cosa clau a destacar aquí, però, és que els arxius de capçalera
en general no inclouen la definició de funcions -
és a dir, les implementacions de la funció reals.
Aquesta és una il · lustració d'una ciència de la computació important
principi anomenat ocultació d'informació, també es fa referència a
vegades com encapsulació.
>> A mesura que l'usuari o el client d'una biblioteca, no cal
conèixer el funcionament intern de la biblioteca en
per poder utilitzar-lo.
Recordo haver vist printf només una mica enrere?
Havies vist alguna vegada el codi real abans?
Bé, suposo que vostè no té, tot i que podria
han utilitzat printf tones de vegades.
Tot el que havia de saber era la declaració de la funció actual
a l'arxiu de capçalera stdio.h.
De tota manera, el benefici d'ocultació d'informació bona és que vostè
i els programes que escriuen estan aïllats de qualsevol canvi en
el codi de l'aplicació de funcions de la biblioteca.
Si la implementació dels canvis printf, vostè no té
anar i canviar tots els programes que utilitzen printf.
>> Llavors, on implementació anar?
Bé, de nou, per conveni, l'execució va en un
arxiu amb l'extensió. c.
En general, els arxius de capçalera i els arxius d'aplicació van
a la mà, així que si vostè ha declarat un munt de nova cadena
funcions en mystring.h, llavors vostè definir tots
aquestes funcions en micadena. c.
Així que els arxius de capçalera i l'execució són llavors
compilat, la creació d'arxius d'objectes que després són units
junts per produir l'arxiu de biblioteca binària.
L'escriptor biblioteca llavors s'enviarà l'arxiu binari al llarg de
amb els arxius de capçalera per als programadors que desitgen utilitzar
la biblioteca.
En aquest punt, els arxius. C d'implementació no són
cal, llevat que recompilar la biblioteca a partir de zero, de manera que
estan sovint deixats de banda.
>> Per utilitzar la biblioteca C, el que has de fer dues coses.
En primer lloc, vostè ha d'incloure # arxius de la biblioteca de capçalera i els
arxiu de codi font que voleu utilitzar
de la biblioteca de codi.
Això informa al compilador de totes les declaracions de
funcions, variables, estructures, etc, presents a la
arxius de capçalera perquè el compilador pot un, assegureu-vos que
que està utilitzant recursos de la biblioteca en la manera adequada,
i dos, generar el codi assemblador corresponent.
Depenent d'on els arxius de la biblioteca de capçalera són
localitzat, la sintaxi # include varia.
Si els arxius de capçalera es troba en el sistema de
defecte include -
típicament, usr/include--
la sintaxi s'utilitza parèntesi angulars, com a # include
.
No obstant això, si els arxius de capçalera es troba en el mateix
directori com el seu propi codi, la sintaxi de cometes dobles és
utilitzat, com en # include "mylib.h".
>> La segona cosa que cal fer és vincular al binari
biblioteca d'arxius en compilar el codi.
Aquest és un pas important super.
Recordeu la nostra discussió anterior sobre com capçalera
arxius no contenen el codi d'implementació?
Si s'oblida aquest pas, rebrà errors sobre
símbols no definits referència en el codi.
Per resoldre aquest problema, utilitzeu l'opció-l seguit immediatament
sense espai pel nom de la biblioteca.
En molts sistemes, incloent l'aparell, l'estàndard de C
Les biblioteques es vinculen automàticament per vostè.
No obstant això, la biblioteca matemàtica és de vegades inclòs per separat
i és possible que s'enllaça amb-lm.
En el dispositiu, nosaltres ens encarreguem d'això per a vostè, i també ens
vincular la biblioteca amb CS50-lcs50.
Pots veure tot això en l'aparell quan s'executa make.
>> Ara vostè hauria de tenir els coneixements necessaris per utilitzar
biblioteques en C. Que es diverteixin explorant.
El meu nom és Nate Hardison, i això és CS50.