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