頭文件、庫文件、命名空間三者之間是什麼關係?


蕭大樓上推薦了書,我也班門弄斧寫一下吧。有錯指正,不明繼續討論,勿噴。
頭文件:就如你正在做房子,有一些東西不是自己能做的需要用別人的,這時候你要說明用了說的,所以引用「頭文件」,別人寫好的東西,你拿過來照著用就OK了;
庫函數:如上,大家都做房子,發現有些東西大家都要用,為了方便大家就做了一個標準,然後成了庫函數;
命名空間:這個一下子還真說不清了,等等我清理一下思路。
←_←←_←←_←←_←補充←_←←_←←_←
命名空間:主要是為了區分不同人做的房子,以及系統的房子。你的房子可能是這個樣子的他的是另一個樣子,然後都是同一個名字,看起來沒辦法區分,所以我們用房子的地基(命名空間)開區分它。同時系統提供的房子或者做房子的方法也有自己特定的命名空間,以免混亂。
←_←←_←←_←我是分割線←_←←_←←_
評論的另一種說法:
命名空間就像A小區有一棟樓房叫6#,B小區恰好也有,我們要去B小區的6#怎麼辦?所以要去的話就要加個前綴,我要去B小區的6#,這個A小區和B小區就是命名空間了


回答完畢,多寫代碼,好好學習!


找本書看吧

俺看的這本書,覺得寫得不錯
C語言編程:一本全面的C語言入門教程(第三版) (豆瓣)


頭文件是編譯時編譯器的預處理部分要用的,庫文件是鏈接器要用的,命名空間是編譯器預處理和預處理之後都要用的


C語言沒有命名空間。
C語言頭文件(.h)和實現文件(.c)沒有本質區別。把聲明放在.h文件、實現放在.c文件只是工程慣例。include僅僅是相當於把那個文件「拷貝」到#include的那個位置。實際上,對於小型項目,蛋疼的人會不寫頭文件,只寫實現文件,然後把實現文件include到一個文件里。
(靜態)庫文件就是一系列編譯好的對象文件,打包放在一起。

C語言,包括其之後的C++,之所以有這麼繁雜的概念,一部分是因為出現的比較早,沒有很多新語言的包、模塊等內置功能;另一部分是因為它們需要貼近計算機底層,而底層是沒有包這種東西的。


#include中的book.h就是頭文件,
#include中的iostream就是庫,
頭文件和庫就像倉庫,裡面有你要用到的東西,你得用include把他倆包含進來。
using namespace std中的std就是命名空間,命名空間是名字定義的集合,一個名字在不同的命名空間里可能有不一樣的定義,比如說一個函數,在不同的命名空間可能功能是不一樣的。


當你看完了一本書,你就懂了。別看了一章就想著能把這章完全搞懂。話說你看的是C++吧……深坑,謹慎。


我覺得可以將頭文件和源文件分別形容U盤的USB介面和內存晶元。


推薦閱讀:

如何評價 Ken Thompson 在 C 編譯器里植入了後門這件事?
有沒有什麼好的C++視頻教程?
《The C++ Programming Language》這本書真的適合初學者嗎?

TAG:C編程語言 | 命名空間 |