c語言學習 h和 c檔案的區別

2021-10-02 17:28:42 字數 709 閱讀 2182

.**件是標頭檔案,內含函式宣告、巨集定義、結構體定義等內容; .c檔案是程式檔案,內含函式實現,變數定義等內容

main函式為標準c/c++的程式入口,編譯器會先找到該函式所在的檔案

#include 「xx.h」 這個巨集其實際意思就是把當前這一行刪掉,把 xx.h 中的內容原封不動的插入在當前行的位置。

c語言要求使用之前必須宣告,而include同名.h一般會放在.c的開頭

譚浩強老師的《c程式設計》一書中提到

,編譯器預處理時,要對#include命令進行"檔案包含處理":將headfile.h的全部內容複製到#include "headfile.h"處。這也正說明了,為什麼很多編譯器並不care到底這個檔案的字尾名是什麼----因為#include預處理就是完成了乙個"複製並插入**"的工作。

程式編譯的時候,並不會去找b.cpp檔案中的函式實現,只有在link的時候才進行這個工作。我們在b.cpp或c.cpp中用#include "a.h"實際上是引入相關宣告,使得編譯可以通過,程式並不關心實現是在**,是怎麼實現的。原始檔編譯後成生了目標檔案(.o或.obj檔案),目標檔案中,這些函式和變數就視作乙個個符號。在link的時候,需要在makefile裡面說明需要連線哪個.o或.obj檔案(在這裡是b.cpp生成的.o或.obj檔案),此時,聯結器會去這個.o或.obj檔案中找在b.cpp中實現的函式,再把他們build到makefile中指定的那個可以執行檔案中。

(非常重要)

C語言字尾 h檔案和 c檔案作用和區別

在編譯器只認識.c cpp 檔案,而不知道.h是何物的年代,那時的人們寫了很多的.c cpp 檔案,漸漸地,人們發現在很多.c cpp 檔案中的宣告語句就是相同的,但他們卻不得不乙個字乙個字地重複地將這些內容敲入每個.c cpp 檔案。但更為恐怖的是,當其中乙個宣告有變更時,就需要檢查所有的.c c...

簡述C語言中 h檔案和 c檔案作用和區別

在編譯器只認識.c cpp 檔案,而不知道.h是何物的年代,那時的人們寫了很多的.c cpp 檔案,漸漸地,人們發現在很多.c cpp 檔案中的宣告語句就是相同的,但他們卻不得不乙個字乙個字地重複地將這些內容敲入每個.c cpp 檔案。但更為恐怖的是,當其中乙個宣告有變更時,就需要檢查所有的.c c...

c語言中的 c檔案和 h檔案

大神的詳細解讀 傳送門 記錄下一點點自己對兩個檔案的理解 函式宣告可以有多分,但函式定義只能有乙份。所以一般不在標頭檔案裡面定義函式,因為同乙個程式的多個 檔案可能都會包含這個標頭檔案。但c 中的inline函式是個例外,得定義在標頭檔案中。為了能夠擴充套件inline函式的內容,在每個呼叫點上,編...