[Powered by Google Translate] Nate HARDISON: In programmering, 'n biblioteek is 'n versameling van verwante prewritten kode. Biblioteke is hoe ons as programmeerders, deel gemeenskaplike en nuttige kode met mekaar, met die verskillende programme wat ons skryf, en selfs met die verskillende prosesse wat dieselfde tyd op ons rekenaars. Laat ons 'n bietjie verken. Een van die meer algemene funksies wat jy het waarskynlik is met behulp van die printf funksie. Nou, is printf nie 'n magic funksie wat hard gekodeer in die rekenaar - maar eerder, dit is deel van die C Standard Biblioteke, wat 'n versameling van funksies wat kom met die C-programmeertaal. Sedert printf is nie gebou in die rekenaar, wat beteken dat daar was 'n programmeerder wat eintlik gaan in en skryf die printf funksie en gebundelde dit met die res van die standaard biblioteke skakel sodat toekomstige programmeerders wil nie hê om tweevoud by die poging. En ons is seker dankbaar dat dit die geval is, want kyk uit hoeveel kode dit eintlik printf neem om te implementeer. Die C Standard Biblioteke, waarvan printf is 'n deel, een van die belangrikste instrumente wat jy in die aanpak CS50. In bykomend tot die input-output biblioteek waar printf lewe, daar kom 'n klomp van die ander biblioteke jy sal waarskynlik oor die loop van CS50. Byvoorbeeld, die tou biblioteek funksies te vergelyk C snare, kry hul lengte, en koppel hulle. En die wiskunde biblioteek gee jou nuttige konstantes, soos pi en e. Nou, in vergelyking met die standaard biblioteke van ander programmering tale, die C Standard Biblioteke is baie klein, maar hulle het nog steeds 'n aansienlike bedrag van die dinge. En dit is nie te sê dat die Standard Biblioteke is die net C biblioteke, daar is baie meer daar buite in die wêreld vir jou om te gebruik, met inbegrip van die CS50 Biblioteek, kartografie biblioteke met enkripsie en dekripsie funksies, biblioteke met funksies te enkodeer en speel video, en so aan. Dit bring ons by 'n belangrike eenkant. Een van die belangrikste vaardighede van ingenieurswese is om te weet van die gereedskap wat beskikbaar is in jou toolbox, sodat jy kan gebruik om hulle en vermy die wiel weer uitvind, tensy jy het om dit te doen. As programmeerders, biblioteke is een van die belangrikste instrumente wat ons het. Wanneer jy jouself die gesig staar 'n taak wat lyk vervelig of alledaags, soos om die lengte van 'n C-string, jy jouself moet vra indien dit die geval mag wees dat iemand reeds dieselfde ding gedoen voor. Kanse is dat jy sommige kon vind hulp in 'n biblioteek. So in tegniese terme, 'n biblioteek is 'n binêre lêer wat is vervaardig deur dit te koppel saam 'n versameling van voorwerp lêers met behulp van 'n instrument genoem, moet jy raai dit al, die koppelingshistoon. Object lêers o lêers wat jy kry as jy. Stel C bron-kode. Wanneer programmeerders skryf biblioteke, hulle gewoonlik skei hul C-kode in twee tipes lêers: header lêers en implementering lêers. 'N header lêer deur konvensie is die h lêer uitbreiding, en dit bevat kode wat sê die biblioteek se hulpbronne wat beskikbaar is vir jou om te gebruik. Hierdie hulpbronne sluit in funksies, veranderlikes, structs, tipe definisies, en so aan, en hulle saam is algemeen na verwys as die koppelvlak. In werklikheid, as jy ooit wonder wat is in 'n biblioteek, die header lêers is die plek om te kyk. Byvoorbeeld, kan jy trek usr / include / stdio.h en kontroleer alles wat jy ooit wou weet oor die die standaard io-biblioteek. Daar is 'n baie van die dinge hier, en dit kan 'n bietjie van die tyd tot waden deur. Maar, saam met Google en die manpages, dit is die plek om te gaan as jy wonder hoe die standaard I / O biblioteek funksies werk. So een van die belangrikste ding om daarop te let, al is, is dat die header lêers tipies sluit nie funksie definisies - dit is die werklike funksie implementasies. Dit is 'n illustrasie van 'n belangrike rekenaarwetenskap beginsel geroep inligting wegkruip, ook soos na verwys in keer as inkapseling. As die gebruiker of die kliënt van 'n biblioteek, het jy nie nodig het om te weet van die werking van die biblioteek in om dit te gebruik. Onthou dat printf net 'n bietjie gelede? Het jy al ooit gesien hoe die werklike kode voor? Wel, ek neem aan dat jy nie het nie, selfs al het jy dalk gebruik printf ton van die tye. Al wat jy het om te weet, was die funksie verklaring teenwoordig in die stdio.h header-lêer. In elk geval, die voordeel van goeie inligting wegkruip is dat jy en die programme wat jy skryf is geïsoleer van enige veranderinge in die kode van die implementering van die biblioteek funksies. Indien die implementering van printf veranderinge, hoef jy nie om te gaan en verander al jou programme wat gebruik printf. So, waar implementering gaan? Wel, weer, deur konvensie, gaan die implementering in 'n lêer met die c-lêer uitbreiding. Gewoonlik header lêers en implementering lêers gaan hand in die hand, so as jy 'n klomp van die nuwe string verklaar funksies in mystring.h, dan sal jy definieer al daardie funksies in mystring c. So dan is die kop-en implementering lêers is dan saamgestel is, voorwerp lêers wat word dan gekoppel die binêre biblioteek lêer saam te produseer. Die biblioteek skrywer sal dan die binêre lêer langs skip met die header lêers vir programmeerders wat wil om te gebruik die biblioteek. Op hierdie punt, die c implementering. Lêers is nie benodig nie, behalwe om die biblioteek te hercompileren van nuuts af, so hulle dikwels uitgelaat. Die C-biblioteek te gebruik, moet jy twee dinge te doen. Eerstens moet jy # sluit die biblioteek se header lêers en die bronkode lêer waar jy wil gebruik die biblioteek se kode. Dit lig die samesteller van al die verklarings van funksies, veranderlikes, structs, ensovoorts, wat in die header lêers sodat die vertaler kan een, verseker dat jy die gebruik van die biblioteek se hulpbronne op die regte manier, en twee, die toepaslike vergadering kode genereer. Afhangende van waar die biblioteek se header lêers geleë is, die # sluit in sintaksis wissel. As die header lêers is geleë in die stelsel se default sluit directory - tipies, usr/include-- dan is die hoek tussen hakies sintaksis gebruik word, soos in # sluit . Maar, as die header lêers is geleë in dieselfde gids as jou eie kode, die dubbele quote sintaksis gebruik word, soos in "mylib.h" sluit. Die tweede ding wat jy hoef te doen is om te skakel in die binêre biblioteek lêer wanneer jy jou kode stel. Dit is 'n super belangrike stap. Onthou ons vorige bespreking oor hoe header lêers bevat geen implementering-kode? As jy vergeet om hierdie stap, sal jy foute oor undefined simbole waarna verwys word in jou kode. Om dit op te los, gebruik die-l vlag onmiddellik gevolg sonder 'n ruimte deur die naam van die biblioteek. Op baie stelsels, met inbegrip van die toestel, die C Standard Biblioteke word outomaties gekoppel vir jou. Egter soms die wiskunde biblioteek gebundelde afsonderlik en dalk moet gekoppel word met lm. Op die toestel, ons sorg van hierdie vir jou, en ons het ook skakel die CS50 biblioteek met lcs50. Jy kan sien al hierdie dinge op die toestel wanneer jy loop maak. Nou moet jy die kennis wat jy nodig het om te gebruik biblioteke in C. Geniet dit. My naam is Nate Hardison, en dit is CS50.