[Powered by Google Translate] NATE Hardison: V programování, knihovna je sbírka související prewritten kód. Knihovny jsou, jak jsme jako programátoři, sdílet společné a užitečné kód s sebou, s různými programy jsme psát, a dokonce s různými procesy běžící na stejný čas na našich počítačích. Pojďme prozkoumat trochu. Jeden z více společných funkcí, které jste pravděpodobně Používám je printf funkce. Nyní, printf není nějaký magie funkce, která je již pevně do počítače - spíše, že je to část C knihoven Standard, které jsou sbírka funkcí, které přichází s C programovací jazyk. Vzhledem k tomu, printf není zabudována do počítače, který znamená, že tam byla nějaká programátor, který skutečně šel a napsal printf funkce a svázaný ji se zbytkem normy knihovny tak, aby budoucí programátoři by nemusel duplicitní úsilí. A jsme si jisti, vděčný, že je to tento případ, protože zkontrolujte , kolik kód to vlastně trvá realizovat printf. Symbol c Standardní knihovny, z nichž printf je součástí, jsou jedním z nejdůležitějších nástrojů, které mají v boji proti CS50. Kromě vstupů a výstupů knihovny, kde printf životy, existuje spoustu dalších knihoven, které budete pravděpodobně používat přes běh CS50. Například, řetězec knihovna funkcí porovnání C řetězců, získat jejich délku, a zřetězit je. A matematická knihovna vám dává užitečné konstanty, jako je pí a e. Nyní, ve srovnání se standardními knihovnami jiných programů jazyce, přičemž C Standardní knihovny jsou opravdu malé, ale stále mají velké množství věcí. A to neznamená, že standardní knihovny jsou pouze C knihovny, existuje mnoho víc venku v svět pro vás k použití, včetně CS50 knihovny, kartografie knihovny s šifrování a dešifrování funkce, knihovny s funkcemi pro enkódování a přehrávat video, a tak dále. To nás přivádí k důležitým stranou. Jednou ze základních dovedností inženýrství je s vědomím, že dostupné nástroje v panelu nástrojů, takže můžete použít je a vyhnout objevování Ameriky, pokud musíte tak učinit. Jako programátoři, knihovny jsou jedním z nejdůležitějších nástroje, které mají. Když se ocitnete tváří v tvář úkolu, který se zdá nudné, nebo samozřejmostí, jako když se délka řetězce C, vy zeptejte se sami sebe, zda to může být případ, že někdo už udělal stejnou věc před. Šance je, že byste mohli najít některé pomoc v knihovně. Takže z technického hlediska, knihovna je binární soubor, který byla vyrobena propojením sbírku objektové soubory pomocí nástroje nazývá, si Uhodli jste, linker. Objekt soubory jsou. O soubory, které dostanete, když budete kompilaci C zdrojový kód. Když programátoři píší knihovny, které obvykle oddělit jejich kód v C do dvou typů souborů: hlavičkové soubory a implementace soubory. Hlavičkový soubor konvencí je dána. H příponu souboru, a obsahuje kód, který prohlašuje, knihovna je zdroje, které jsou k dispozici pro vás k použití. Tyto zdroje zahrnují funkce, proměnné, struktur, typ definice, a tak dále, a společně, jsou obyčejně odkazoval se na jako rozhraní. Ve skutečnosti, pokud jste někdy přemýšlel, co je v knihovně, hlavičkové soubory jsou místem, kde hledat. Například, můžete vytáhnout až usr / include / stdio.h a zkontrolujte si vše co jste kdy chtěli vědět o standardní io knihovny. Je tu spousta věcí, v tu, a to může trvat trochu čas prokousat. Nicméně, spolu s firmou Google a manuálové stránky, to je místo, kam jít, pokud jste zvědaví, jak standardní I / O knihovní funkce pracují. Takže jeden klíč věc k poznámce, však je, že hlavičkové soubory obvykle nezahrnují definice funkcí - to znamená, že skutečné funkce implementace. To je ilustrace významného informatiky Princip tzv. skrývání informací, také odkazoval se na v krát zapouzdření. Jako uživatel nebo klient o knihovny, budete nemusíte vědět o vnitřku knihovny v Aby bylo možné použít ji. Nezapomeňte vidět printf jen trochu před? Kdyby jste někdy viděli skutečný kód před? No, předpokládám, že nemáte, i když si možná byly použity printf tun časů. Vše, co musel vědět, byla funkce prohlášení současné v stdio.h záhlaví souboru. Každopádně, výhoda dobrého skrývání informací je to, že a programy, které napsat jsou izolovány od jakýchkoli změn v kód implementace knihovny funkcí. Pokud implementace printf změn, nemáte jít a změnit všechny programy, které používají printf. Takže tam, kde se realizace jít? No, opět, podle konvence, implementace jde do soubor s příponou. souboru c. Obvykle, hlavičkové soubory a implementace soubory jdou ruku v ruce, takže pokud jste prohlásil spoustu nového řetězce funkce v mystring.h, pak budete definovat všechny tyto funkce v MyString. c.. Takže hlavičkové a realizace soubory jsou pak sestaven, vytvářet objektové soubory, které jsou pak spojeny společně produkovat binární soubor knihovny. Knihovna spisovatel pak loď binární soubor podél s hlavičkových souborů na programátory, kteří chtějí využít knihovna. V tomto bodě se. C Provedení soubory nejsou potřeba, s výjimkou překompilovat knihovnu od nuly, takže oni často vynechává. Chcete-li použít knihovnu C, musíte udělat dvě věci. Za prvé, musíte # include knihovny hlavičkové soubory a Zdrojový kód souboru, kde chcete použít knihovny kódu. To informuje kompilátor všech prohlášení o funkce, proměnné, struktur, et cetera, přítomné v hlavičkové soubory, takže kompilátor může jeden, se ujistili, že jste pomocí knihovny zdroje správným způsobem, a za druhé, generovat odpovídající kód assembleru. V závislosti na tom, kde se knihovna je hlavičkové soubory jsou nachází, # include syntaxe se liší. Pokud hlavičkové soubory jsou umístěny v systému je Výchozí obsahovat adresář - typicky, usr/include-- pak úhel závorky syntaxe je použita, jak v # zahrnují . Nicméně, v případě, že hlavičkové soubory jsou umístěny ve stejné adresář jako vlastní kód, dvojité citace syntaxe je používán, jak v # zahrnují "mylib.h". Druhá věc, kterou musíte udělat, je spojit v binárním Soubor knihovny při kompilaci kódu. To je super důležitý krok. Pamatuješ se na naše dřívější diskusi o tom, jak hlavička Soubory neobsahují implementace kód? Pokud jste zapomněl tento krok, budete se chyby o nedefinované symboly uvedenou v kódu. K vyřešení tohoto problému, použijte-l bezprostředně následuje bez prostoru podle názvu knihovny. Na mnoha systémech, včetně zařízení, C Standardní Knihovny jsou automaticky propojeny pro vás. Nicméně, je matematická knihovna někdy svázaný samostatně a mohla by být spojena s-lm. Na zařízení, my se postaráme o to pro vás, a také odkaz na CS50 knihovnu-lcs50. Můžete vidět vše na přístroji při spuštění provést. Nyní byste měli mít znalosti, které potřebujete k používání knihovny v C. Dobře se bavte. Mé jméno je Nate Hardison, a to je CS50.