[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.