[Powered by Google Translate] Nate HARDISON: En programado, biblioteko estas kolekto de rilatantaj prewritten kodo. Bibliotekoj estas kiel ni, kiel programistoj, dividi kaj komunaj helpema kodo kun la alia, kun la diversaj programoj ni skribi, kaj eĉ kun la malsamaj procezoj kurante al la sama tempo en niaj komputiloj. Ni esploras iom. Unu el la pli komuna funkcioj kiuj vi havas probable estis uzante estas la printf funkcio. Nun, printf ne iu magio funkcio ke tio estis malmola kodita en la komputilo - pli ĝuste, ĝi estas parto de la C Standard Bibliotekoj, kiu estas kolekto de funkcioj kiu venas kun la C programlingvo. Ekde printf ne estas konstruita en la komputilo, kiu volas diri ke estis iu programisto kiu fakte eniris kaj skribis la printf funkcio kaj ekestos ĝin kun la resto de la normo bibliotekoj por ke estontaj programistoj ne devus duobligi la penado. Kaj ni certe dankema ke tio estas la kazo, ĉar kontroli el kiom kodo efektive portas apliki printf. La C Standard Bibliotekoj, de kiuj printf estas parto, estas unu el la plej gravaj iloj vin havas en tuŝi CS50. Krom la eneliga biblioteko kie printf vivojn, estas amaso de aliaj bibliotekoj kiuj vi probable uzas la kurso de CS50. Ekzemple, la kordo biblioteko havas funkciojn por kompari C kordoj, kroĉis lian longo, kaj concatenate ilin. Kaj la matematikaj biblioteko donas helpema konstantoj, kiel pi kaj e. Nun, kompare al la norma biblioteko de aliaj programado lingvoj, la C Standard Bibliotekoj estas vere malgranda, sed ili ankoraŭ havas signifan kvanton de aĵoj. Kaj tio ne estas diri ke la Normo Bibliotekoj estas la nur C bibliotekoj; estas multaj pli tie en la mondo por vi uzi, inkludante la CS50 Biblioteko, kartografio bibliotekoj kun ĉifrado kaj malĉifro funkcioj, bibliotekoj kun funkcioj por kodi kaj ludi reen video, kaj tiel plu. Ĉi tio alportas al ni gravan flanken. Unu el la esencaj kapabloj de inĝenierio estas koni la disponeblaj iloj en via skatolo tiel ke vi povas uzi ilin kaj eviti reinventing la radon se vi devas fari tion. Kiel programistoj, bibliotekoj estas unu el la plej gravaj iloj ni havas. Kiam vi trovas vin mem alfrontas tasko kiu ŝajnas teda aŭ banala, kiel trovi la longo de C kordoj, vi demandu vin mem, se ĝi povus esti la kazo ke ies jam faris la samon antaŭe. Certe ke vi povus trovi iun helpi ene de biblioteko. Do en teknikaj terminoj, biblioteko estas duuma dosiero estis produktita de kunligi kune kolekto de objekto dosierojn uzante ilo nomita, vi divenis, la enlazador. Objekto dosieroj estas tiuj. O dosierojn kiuj vi akiras, kiam vi kompili C fonta kodo. Kiam programistoj skribi bibliotekoj, ili tipe apartigi liajn C-kodo en du tipojn de dosieroj: kaplinio dosierojn kaj efektivigo dosierojn. Al kapdosiero per konvencio estas donita la. H sufikso, kaj ĝi enhavas kodon kiu deklaras la biblioteko rimedoj, kiuj estas disponeblaj por vi uzi. Tiuj rimedoj inkluzivas funkcioj, variabloj, structs, tipo difinojn, kaj tiel plu, kaj kune, ili estas kutime referita al kiel la interfaco. Fakte, se vi iam demandis kio estas en biblioteko, la ĉapon dosieroj estas la loko por rigardi. Ekzemple, vi povas tiri supren usr / inkluzivi / stdio.h kaj kontroli el ĉio vi iam volis scii pri la normo io biblioteko. Ekzistas multe da taskoj en ĉi tie, kaj ĝi povas preni iom da tempon por vadi tra. Tamen, kune kun Google kaj la manpages, ĉi tiu estas la meti por iri se vi scivolas kiel la norma / S biblioteko funkcioj funkcii. Do unu klavo afero noti tie, tamen, estas ke header files tipe ne inkludas funkcio difinoj - tio estas, la reala funkcio implementaciones. Ĉi tiu estas ilustrado de grava komputiko principo nomita informoj kaŝante, ankaŭ nomita en fojoj encapsulación. Kiel la uzanto aŭ la kliento de biblioteko, vi ne bezonas scias pri la internals de la biblioteko en ordigi uzi ĝin. Memoru vidante printf nur iom antaŭe? Se vi iam vidis la reala kodo antaŭ? Nu, mi supozas ke vi ne havas, eĉ kvankam vi eble uzis printf tunoj da fojoj. Vi devis scii estis la funkcio deklaro aktuala en la stdio.h header dosiero. Ĉiuokaze, la profito de bonaj informoj kaŝejo estas, ke vi kaj la programoj kiujn vi skribas estas ekster ajna ŝanĝoj en La kodo de la efektivigo de biblioteko funkcioj. Se la apliko de printf ŝanĝojn, vi ne havas iri kaj ŝanĝi ĉiujn viajn programojn kiuj uzas printf. Do kie tio efektivigo iri? Nu, denove, per konvencio, la efektivigo iras en dosieron kun la. c sufikso. Kutime, header dosierojn kaj efektivigo dosieroj iri manon en la mano, do se vi deklaris faskon da novaj kordoj funkcioj en mystring.h, tiam vi difinas cxiuj tiuj funkcioj en mystring. c. Do tiam la kaploko kaj efektivigo dosieroj estas tiam kompilita, kreante objekto dosierojn kiuj tiam ligitaj kune por produkti la duuma biblioteko dosiero. La biblioteko verkisto tiam ŝipo la duuma dosiero kune kun la header files por programistoj kiuj volas uzi la biblioteko. Je ĉi tiu punkto, la. C efektivigo dosieroj ne estas bezonata, krom recompilar la biblioteko de nulo, tiel ili estas ofte lasitaj ekstere. Por uzi la C biblioteko, vi devas fari du aĵojn. Unue, vi devas # include la biblioteko header dosierojn kaj la fontkodon dosiero kie vi volas uzi la biblioteko kodo. Ĉi informas la tradukilon el ĉiuj de la deklaroj de funkcioj, variabloj, structs, kaj tiel plu, ĉeestanta en la header files por ke la tradukilo povas unu, certigi ke vi uzas la bibliotekon de rimedoj en la taŭgan vojon, kaj du, generi la taŭga asembleo kodo. Depende kie la biblioteko header dosieroj lokitaj, la # inkluzivas sintakso varias. Se la kaplinion dosieroj estas lokita en la sistemo defaŭlta inkludas dosierujon - tipe, usr/include-- tiam la angulo krampoj sintakso estas uzata, kiel en # include . Tamen, se la kaplinion dosieroj estas lokita en la sama dosierujo kiel vian propran kodon, la duobla citaĵo sintakso estas uzata, kiel en # include "mylib.h". La dua afero kion vi devas fari estas ligi en la duuma biblioteko dosiero kiam vi kompili vian kodon. Ĉi tiu estas super grava paŝo. Memoru nia pli frua diskuto pri kiel header dosieroj ne enhavas efektivigo kodo? Se vi forgesos tiun paŝon, vi ricevos erarojn pri nedefinita simboloj referenciado en via kodo. Por solvi tion, uzu la-l flago sekvis tuj sen spaco per la nomo de la biblioteko. Sur multaj sistemoj, inkluzive de la aparaton, la C Norma Bibliotekoj aŭtomate ligitaj al vi. Tamen, la math biblioteko estas iam ekestos aparte kaj eble bezonos esti ligitaj kun-lm. Sur la aparaton, ni prizorgi tion por vi, kaj ni ankaŭ ligi la CS50 biblioteko kun-lcs50. Vi povas vidi ĉion ĉi pri la aparaton, kiam vi kuris fari. Nun vi devus havi la scion vi bezonas uzi bibliotekoj en C. Have fun esplori. Mia nomo estas Nate Hardison, kaj ĉi tiu estas CS50.