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

2021-09-02 03:45:33 字數 1143 閱讀 2090

大神的詳細解讀:傳送門

記錄下一點點自己對兩個檔案的理解

函式宣告可以有多分,但函式定義只能有乙份。所以一般不在標頭檔案裡面定義函式,因為同乙個程式的多個**檔案可能都會包含這個標頭檔案。

但c++中的inline函式是個例外,得定義在標頭檔案中。為了能夠擴充套件inline函式的內容,在每個呼叫點上,編譯器都能取得其定義。這意味我們必須將inline函式的定義放在標頭檔案中。

c++中在類的內部定義成員函式,會被自動視為inline函式。

在.h檔案裡面宣告了函式後,編譯器會到所有的.c檔案裡面尋找是否有.h檔案裡面宣告的函式,所以.h檔案可以不和.c檔案同名。

我建立了test.h,testa.c,testb.c檔案

test.h

#ifndef test_h

#define test_h

void print();

#endif // test_h

testa.c

#include void print()

testb.c

#include void print()

報錯:

f:\codeblocks\code\c++\testb.c|4|multiple definition of `print'|
此時去掉testb.c檔案後,編譯正確。

在.c檔案中新增.h檔案,相當於將.h檔案中的全部內容(函式宣告)放到了.c檔案那裡

main.c

#include "test.h"

int main()

去掉頭檔案後

f:\codeblocks\code\c++\main.cpp|5|error: 'print' was not declared in this scope|
修改**

//#include "test.h"

void print();

int main()

程式正常執行

此時編譯器會到所有編譯的.c檔案裡面查詢print()函式

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語言中 h檔案的作用

h中一般放的是同名.c檔案中定義的變數 陣列 函式的宣告,需要讓.c外部使用的宣告。h檔案作用 1.方便開發 包含一些檔案需要的共同的常量 結構 型別定義,函式宣告,變數宣告。2.使函式的作用域從函式宣告的位置開始,而不是函式定義的位置。3.通過標頭檔案來呼叫庫功能。在很多場合,源 不便公開,只能向...