c語言中標頭檔案和原始檔寫法有什麼區別

2021-12-28 02:28:26 字數 1890 閱讀 8345

1樓:福建省寧德市

標頭檔案和原始檔在本質上沒有任何區別。   只不過一般:字尾為  .

h 的檔案是標頭檔案,內含函式宣告、巨集定義、結構體定義等內容。字尾為  .c 的檔案是原始檔,內含函式實現,變數定義等內容。

而且是什麼字尾也沒有關係,只不過編譯器會預設對某些字尾的檔案採取某些動作。這樣分開寫成兩個檔案是一個良好的程式設計風格。

簡單的說其實要理解c檔案與標頭檔案(即.h)有什麼不同之處,首先需要弄明白編譯器的工作過程,一般說來編譯器會做以下幾個過程:

①預處理階段

②詞法與語法分析階段

③ 編譯階段,首先編譯成純彙編語句,再將之彙編成跟cpu相關的二進位制碼,生成各         個目標檔案 (.obj檔案)

④連線階段,將各個目標檔案中的各段**進行絕對地址定位,生成跟特定平臺相關           的可執行檔案,當然,最後還可以用objcopy生成純二進位制碼,也就是去掉了檔案格         式信 息。(生成.exe檔案)

3.比方說 在aaa.h裡定義了一個函式的宣告,然後在aaa.

h的同一個目錄下建立aaa.c , aaa.c裡定義了這個函式的實現,然後是在main函式所在.

c檔案裡#include這個aaa.h  然後我就可以使用這個函式了。 main在執行時就會找到這個定義了這個函式的aaa.

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

假定編譯程式編譯myproj.c(其中含main())時,發現它include了mylib.h(其中宣告瞭函式void test()),那麼此時編譯器將按照事先設定的路徑(include路徑列表及**檔案所在的路徑)查詢與之同名的實現檔案(副檔名為.

cpp或.c,此例中為mylib.c),如果找到該檔案,並在其中找到該函式(此例中為void test())的實現**,則繼續編譯;如果在指定目錄找不到實現檔案,或者在該檔案及後續的各include檔案中未找到實現**,則返回一個編譯錯誤.

其實include的過程完全可以「看成」是一個檔案拼接的過程,將宣告和實現分別寫在標頭檔案及c檔案中,或者將二者同時寫在標頭檔案中,理論上沒有本質的區別。以上是所謂動態方式。對於靜態方式,基本所有的c/c++編譯器都支援一種連結方式被稱為static link,即所謂靜態連結。

在這種方式下,我們所要做的,就是寫出包含函式,類等等宣告的標頭檔案(a.h,b.h,...

),以及他們對應的實現檔案(a.cpp,b.cpp,...

),編譯程式會將其編譯為靜態的庫檔案(a.lib,b.lib,...

)。在隨後的**重用過程中,我們只需要提供相應的標頭檔案(.h)和相應的庫檔案(.

lib),就可以使用過去的**了。相對動態方式而言,靜態方式的好處是實現**的隱蔽性,即c++中提倡的「介面對外,實現**不可見」。有利於庫檔案的**.

2樓:匿名使用者

通常標頭檔案裡面放的一些巨集定義,函式宣告。副檔名取為.h

而原始檔一般是函式體構成。副檔名通常為.c或.cpp

3樓:

標頭檔案就是你**開始的部分,例如:include..

原始檔就是你編的**最初始的檔案..字尾名為.cpp

c語言中標頭檔案和原始檔寫法有什麼區別?

c語言中的標頭檔案,原始檔到底是什麼東西?

4樓:求迎天區瀾

其實就是儲存你所寫的語句的地方,你寫完語句後需要用一個軟體來開啟它,執行它.而這個軟體所能識別的檔案,就稱為該軟體的原始檔.

如c語言常用的執行軟體"turbo

c",能識別的檔案是以".c"為字尾名的檔案,所以你在寫完c語句後儲存的時候,就要儲存成***.c

(檔名+點c),以便turbo

c能順利的開啟.

在c語言中如何自定義標頭檔案

自定義標頭檔案通常放在使用該標頭檔案的原始檔所在的目錄中,並使用 include myhead.h 來包含。標頭檔案是不編譯的,因為c語言編譯過程之前有個預編譯過程。在這個過程中用標頭檔案中的內容替換原始檔中 include 命令,所以在編譯器看來,沒有標頭檔案,只有原始檔。預編譯過程還包括條件編譯...

C語言中的標頭檔案可以自己寫嗎,C語言如何寫標頭檔案?

標頭檔案幾個好處 1,標頭檔案可以定義所用的函式列表,方便查閱你可以呼叫的函式 2,標頭檔案可以定義很多巨集定義,就是一些全域性靜態變數的定義,在這樣的情況下,只要修改標頭檔案的內容,程式就可以做相應的修改,不用親自跑到繁瑣的 內去搜尋。3,標頭檔案只是宣告,不佔記憶體空間,要知道其執行過程,要看你...

c和c 語言中常用的檔案包含命令

你要用什麼函式就包含什麼標頭檔案啊,光知道包含什麼標頭檔案卻不知道該用什麼函式也是白搭。你知道你要用什麼函式後上網或者msdn查查就知道這個函式的標頭檔案是什麼了。這種事情在程式設計的時候再去搞清楚就行了,不需要現在就想一次性弄明白。所有都用 include 即可,不論是庫檔案還是本地檔案。因為 i...