[Powered by Google Translate] NATE哈迪森：在編程中，圖書館是一個集
相關預先寫好的代碼。
圖書館是如何，我們作為程序員，有著共同的和
有用的代碼，與不同的節目中，我們相互
寫，甚至運行在不同的進程
同時在我​​們的電腦上。
>> 讓我們探討一下。
其中比較常見的功能，你可能
一直使用的是printf函數。
現在，printf是不是有些神奇的功能，
硬編碼到計算機 -
相反，它是C標準庫的一部分，這是
附帶的功能的集合
C編程語言。
由於printf是內置於計算機中，這意味著，
有一些程序員究竟是誰走了進去，並寫下了
printf函數和捆綁它與其餘的標準
庫，從而使未來的程序員不會有
重複的努力。
我們相信感激，這樣的話，因為檢查
出它實際上需要多少代碼來實現輸出。
>> C標準庫，其中printf是一個部分，
最重要的工具之一，你
在解決CS50。
除了輸入輸出庫其中
printf的生活，還有一堆其他圖書館，
你可能會使用的CS50的過程。
例如，字符串庫的功能，
比較C字符串，其長度，然後將它們連接起來。
和數學庫為您提供幫助
常量，如pi和e。
現在，相比其他編程標準庫
語言，C標準庫是非常小的，
但他們仍然有一個重要的東西。
這並不是說，標準庫是
C庫，也有許多在那裡的
供您使用，包括CS50圖書館的世界，
製圖庫加密和解密
函數，庫函數進行編碼和
回放視頻，等等。
>> 這給我們帶來了一個重要的一邊。
工程的基本技能之一是知道的
在你的工具箱中的工具，使您可以使用
他們和避免重新發明輪子，除非
你必須這樣做。
作為程序員，庫是一個最重要的
我們的工具。
當你發現自己面臨著一個任務，這似乎單調乏味或
司空見慣，就像找到一個C字符串的長度，
應該問自己，如果可能的情況下，
已經有人做了同樣的事情之前。
有機會，你可以找到一些
幫助在圖書館。
>> 因此，在技術方面，圖書館是一個二進制文件，
已產生的連接在一起的集合
使用工具的目標文件調用，你
猜對了，連接器。
目標文件是o文件，你當你
編譯C源代碼。
當程序員編寫的庫，他們通常
他們的C代碼分離成兩種類型的文件：
頭文件和實現文件。
按照慣例，一個頭文件。h文件擴展名，
它包含的代碼，聲明該庫的
資源供您使用。
這些資源包括函數，變量，結構，
類型定義，以及等等，並在一起，它們是
通常稱為作為接口。
事實上，如果你曾經想知道什麼是在圖書館，
頭文件的地方去尋找。
>> 例如，你可以拉起來USR /包括/ stdio.h和檢查
一切你曾經想知道
標準IO庫。
有很多東西在這裡，它可以採取一些
涉水通過。
然而，隨著谷歌和聯機幫助頁，這是
地方去，如果你想知道如何使用標準I / O
庫函數的工作。
因此，這裡要注意的一個關鍵的事情，不過，就是這個頭文件
通常不包括函數定義 -
也就是說，實際的功能實現。
這是一個重要的計算機科學的圖示
原則叫做信息隱藏，也被稱為在
倍封裝。
>> 由於用戶或客戶端的一個庫，則不需要
了解庫中的內部
為了使用它。
還記得看到輸出只是有點？
如果你實際的代碼之前見過嗎？
嗯，我認為即使你沒有，你可能
用的printf噸的次數。
你必須知道的是函數的聲明存在
在stdio.h頭文件。
總之，良好的信息隱藏的利益是你
你寫的程序是絕緣的任何變化
的庫函數的實現代碼。
如果執行的printf的變化，你不必
去改變所有你的程序中使用printf。
>> 那麼，實施去了？
好了，再次，按照慣例，實施“在
。c文件擴展名的文件。
通常情況下，頭文件和實現文件齊頭並進
在手，所以，如果你已經聲明了一堆新的字符串
在mystring.h的功能，然後你可以定義所有的
這些功能在mystring。
那麼接下來的頭文件和實現文件，然後
編譯，創建目標文件，然後鏈接
在一起，產生的二進制庫文件。
庫編寫者將附帶的二進制文件，以及
程序員誰想要使用的頭文件
該庫。
在這一點上，C語言實現文件
需要，除了從頭開始，所以重新編譯該庫
他們經常離開了。
>> 要使用C庫，你必須做兩件事情。
首先，你必須包括庫的頭文件和
你想使用源代碼文件
庫中的代碼。
這告訴編譯器，所有的聲明
函數，變量，結構，等等，目前在
頭文件，以便編譯器之一，確保
您正在使用圖書館的資源以適當的方式，
2，生成相應的彙編代碼。
根據庫的頭文件
位於的＃include語法各不相同。
如果頭文件位於系統的
默認情況下包括目錄 -
通常情況下，usr/include--
然後尖括號語法時，如在＃include
。
然而，如果頭文件都位於相同的
目錄作為自己的代碼，雙引號的語法是
使用＃“包括”mylib.h。
>> 你所要做的第二件事是鏈接的二進制
庫文件時，編譯你的代碼。
這是一個超級的重要步驟。
還記得我們前面的討論中，關於如何頭
文件不包含實現代碼嗎？
如果你忘了這一步，你會得到錯誤信息
在你的代碼中未定義的符號引用。
要解決此問題，請使用-l標誌，後面緊跟
沒有空間的庫名稱。
在許多系統，包括家電，C標準
庫將自動為您聯繫。
然而，有時被捆綁的數學庫分別
可能需要鏈接時使用-lm。
在設備上，我們為你照顧，我們也
鏈接CS50圖書館，lcs50的。
當你運行時，在設備上，你可以看到這一切。
>> 現在你應該有你需要使用的知識
C.庫中盡情探索。
我的名字是Nate哈迪森，這是CS50。