[Powered by Google Translate] NATE Hardison: I programmering, er et bibliotek en samling af relaterede foruddefineret kode. Biblioteker er, hvordan vi som programmører, deler fælles og hjælpsomme kode med hinanden, med de forskellige programmer, vi skrive, og selv med de forskellige processer kører på samme tid på vores computere. Lad os udforske en smule. En af de mere almindelige funktioner, som du har sikkert brugt er den printf funktion. Nu printf er ikke noget magisk funktion, som har været kodet ind i computeren - snarere, det er en del af C Standard Biblioteker, der er en samling af funktioner, der kommer med C programmeringssprog. Da printf ikke er indbygget i computeren, betyder det, at der var nogle programmør, der rent faktisk gik ind og skrev det printf funktion og bundtet det med resten af ​​standarden biblioteker således at fremtidige programmører ikke ville have til duplikere indsatsen. Og vi er sikker taknemmelige for, at det er tilfældet, fordi tjek ud af, hvor meget kode det faktisk tager at gennemføre printf. De C Standard Biblioteker, hvoraf printf er en del, er en af ​​de vigtigste værktøjer, du har i forbindelse med bekæmpelse CS50. Ud over den input-output bibliotek, hvor printf liv, er der en masse andre biblioteker, du skal nok bruge i løbet af CS50. For eksempel har strengen biblioteket funktioner sammenligne C strenge, få deres længde, og sammenkæde dem. Og math biblioteket giver dig nyttige konstanter, som pi og e. Nu, i forhold til standard biblioteker af anden programmering sprog, er C Standard Biblioteker er virkelig små, men de har stadig en betydelig mængde af ting. Og det er ikke til at sige, at standarden Biblioteker er den kun C-biblioteker og der er mange flere derude i verden for dig at bruge, herunder CS50 Bibliotek, kartografi biblioteker med kryptering og dekryptering funktioner, biblioteker med funktioner til at indkode og afspille video og så videre. Dette bringer os til en vigtig side. En af de væsentlige færdigheder for teknik er at vide det værktøjer til rådighed i din værktøjskasse, så du kan bruge dem og undgå at genopfinde hjulet, medmindre du er nødt til at gøre det. Som programmører, er biblioteker en af ​​de vigtigste redskaber, vi har. Når du finder dig selv over for en opgave, der synes kedelig eller almindelig, som at finde længden af ​​en C-streng, du bør spørge dig selv, om det kunne være tilfældet, at nogen har allerede gjort det samme før. Chancerne er, at du kunne finde nogle hjælp inden for et bibliotek. Så teknisk set er et bibliotek en binær fil, er fremstillet ved at kombinere en samling af objekt filer ved hjælp af et værktøj kaldet, du gættet det, linkeren. Objekt-filer er dem. O filer, du får, når du kompilere C kildekode. Når programmører skriver biblioteker, de typisk adskille deres C-kode i to typer af filer: header-filer og gennemførelse filer. Et hovedstød fil ved konvention får. H. filtypenavn, og den indeholder kode, der erklærer bibliotekets ressourcer, der er til rådighed for dig at bruge. Disse ressourcer omfatter funktioner, variabler, structs, type definitioner, og så videre, og sammen er de almindeligvis kaldet grænsefladen. I virkeligheden, hvis du er nogensinde spekulerer på, hvad der er i et bibliotek, header-filer er det rette sted at kigge. For eksempel kan du trække op usr / include / stdio.h og tjek alt, hvad du nogensinde ønsket at vide om standard io biblioteket. Der er en masse ting herinde, og det kan tage en smule af tid at vade igennem. Men sammen med Google og de manpages, er dette den sted at gå Hvis du undrer dig over, hvordan standard I / O biblioteksfunktioner arbejde. Så en vigtig ting at bemærke her, er dog, at header-filer typisk ikke omfatter funktionsdefinitioner - det vil sige, den aktuelle funktion implementeringer. Dette er en illustration af en vigtig datalogi Princippet kaldes information skjul, også nævnt i gange så indkapsling. Når brugeren eller kunden af ​​et bibliotek, behøver du ikke at kender den interne af biblioteket i For at kunne bruge det. Husk at se printf bare en smule siden? Havde du nogensinde set den konkrete kode før? Nå, jeg formoder, at du ikke har, selvom du måske har brugt printf tons gange. Alt du havde at vide var funktionserklæringen til stede i stdio.h header fil. Anyway, til gavn for god information skjule er, at du og de programmer, du skriver er isoleret fra eventuelle ændringer i koden for gennemførelse af bibliotekets funktioner. Hvis gennemførelsen af ​​printf ændringer, behøver du ikke at gå og ændre alle dine programmer, der bruger printf. Så hvor kommer implementering hen? Nå, igen efter sædvane går gennemførelse i en fil med den. c. filtypenavnet. Normalt header-filer og gennemførelse filer går hånd i hånd, hvis så du har erklæret en masse ny streng funktioner i mystring.h, så vil du definere alle disse funktioner i mystring. ca. Så header og implementering filer er så udarbejdet, skaber objekt filer, der derefter forbundet sammen til frembringelse af den binære biblioteksfilen. Biblioteket forfatter vil derefter sende den binære fil ad med header filer til programmører, der ønsker at bruge biblioteket. På dette tidspunkt er de. C Gennemførelse filer ikke behov, bortset fra at genkompilere biblioteket fra bunden, så de er ofte udeladt. For at bruge C-bibliotek, du er nødt til at gøre to ting. Først skal du # include bibliotekets header-filer og de kildekode fil, hvor du ønsker at bruge bibliotekets kode. Dette informerer compiler af alle erklæringer om funktioner, variable structs, et cetera, til stede i header-filer, så compileren kan man, sikre, at du bruger bibliotekets ressourcer på den rigtige måde, og to, genererer den relevante samling kode. Afhængig af hvor bibliotekets header-filer er placeret, # include syntaksen varierer. Hvis header filer er placeret i systemets standard omfatter bibliotek - typisk, usr/include-- så vinklen parentes syntaks anvendes, som i # include . Hvis header filerne er placeret i samme bibliotek som din egen kode, er det dobbelt citat syntaks anvendes, som i # include "mylib.h". Den anden ting du skal gøre er at linke i den binære biblioteksfil når du kompilerer din kode. Det er et super vigtigt skridt. Husk vores tidligere diskussion om, hvordan header filer ikke indeholder gennemførelse kode? Hvis du glemmer dette trin, får du fejl omkring udefinerede symboler der refereres til i din kode. For at løse dette, skal du bruge-l flaget efterfulgt umiddelbart uden mellemrum ved navn biblioteket. På mange systemer, herunder apparatet, C Standard Biblioteker sammenkædes automatisk for dig. Imidlertid er math biblioteket undertiden bundtet separat og muligvis kædes sammen med-lm. På apparatet, tager vi os af det for dig, og vi har også forbinde CS50 bibliotek med-lcs50. Du kan se alt dette på apparatet, når du kører lave. Nu skulle du have den viden, du skal bruge biblioteker i C. er sjovt at opleve. Mit navn er Nate Hardison, og dette er CS50.