當前位置:首頁 » 編程語言 » c語言源文件頭文件

c語言源文件頭文件

發布時間: 2022-10-22 21:30:49

c語言什麼是頭文件

頭文件在計算機C語言家族程序中被大量使用,主要作用在於多個代碼文件全局變數的重用、防止定義的沖突,對各個被調用函數給出一個描述,其本身不需要包含程序的邏輯實現代碼,它只起描述性作用,用戶程序只需要按照頭文件中的介面聲明來調用相關函數或變數,鏈接器會從庫中尋找相應的實際定義代碼。

一些初學C語言的人,不知道頭文件(*.h文件)原來還可以自己寫的。只知道調用系統庫函數時,要使用#include語句將某些頭文件包含進去。其實,頭文件跟.C文件一樣,是可以自己寫的。頭文件是一種文本文件,使用文本編輯器將代碼編寫好之後,以擴展名.h保存就行了。頭文件中一般放一些重復使用的代碼,例如函數聲明,變數聲明,常數定義,宏的定義等等。當使用#include語句將頭文件引用時,相當於將頭文件中所有內容,復制到#include處。使用頭文件不僅可以減少工作量,還可以減少因代碼編寫不細心而導致的錯誤。

工具/原料

Visual C++ 6.0

方法/步驟

打開Visual C++ 6.0,文件-新建-文件選項卡-C/C++ Header File

編寫代碼如下:

max(int x,int y)

{

if(x>y)

printf("%d",x);

else

printf("%d",y);

}

按Ctrl+S或者點擊保存,然後可以看到目錄下有一個H1.H,這就是我們的頭文件了,把它放到“Visual C++ 6.0安裝目錄\VC98\ATL\Include”文件夾下就可以使用了。

使用方法就像使用自帶的頭文件一樣。

一個簡單的比較兩數大小的頭文件就完成了,很簡單吧。

㈡ 頭文件和源文件有什麼區別

頭文件和源文件的區別表現在:後綴不同、內容不同。

1、後綴不同

後綴為.h的文件是頭文件。

後綴為.c的文件是源文件,內含函數實現,變數定義等內容。

2、內容不同

頭文件用來寫類的聲明(包括類的成員的聲明和方法聲明)、函數原型、#define常數等。

源文件主要寫實現頭文件中已經聲明的那些函數的具體代碼。



頭文件的組成

頭文件一般由四部分內容組成:

(1)頭文件開頭處的版權和版本聲明;

(2)預處理塊;

(3)inline函數的定義;

(4)函數和類結構聲明等。

在頭文件中,用ifndef/define/endif結構產生預處理塊,用#include格式來引用庫的頭文件。頭文件的這種結構,是利用C語言進行開發軟體所通常具備的,屬於公有知識。

㈢ C語言中的頭文件,源文件到底是什麼東西

1、cpp文件和.h文件有各自的分工,一般來說,h文件中是類的定義和類成員函數的聲明,以及全局變數定義等;cpp文件是對應h文件中成員函數的代碼實現。一般cpp文件代碼較多。

2、 一般我們在編譯的時候只編譯cpp文件,將該cpp包含的h文件設為依賴。從而將這些cpp文件和h文件聯系起來

㈣ 「C語言源程序頭文件」這是什麼意思

在c語言中,源代碼包含兩個文件。1是.h2是.c 這里指的就是.h文件咯。

㈤ C語言的開始:源文件,頭文件

任何C程序最終都是要寫在文件上面,通常分兩種,源文件和頭文件,不是每個程序都有頭文件,比如一些簡單小程序就沒有。

源文件根據慣例,通常擴展名為.C,但是能否用其他擴展名嗎?查了一些資料,得到的答案是:盡管標准並沒有制定文件的取名規則,但大多數環境都存在你必須遵守的文件名命令約定。

頭文件根據慣例,通常擴展名為.h。通常是一個源文件對應一個的頭文件,並且兩個文件名相同,只是擴展名不同。我一直有個疑惑,就是可以讓源文件和頭文件兩個文件名不同嗎?經過親自折騰一下,確是可以的。經過細想,原因如下:頭文件只是用於共享宏、變數、函數等的。而且#include的語義是把對應的文件包含進來,至於包含的文件是什麼名字並不重要,要不要和源文件名相同也不重要,如果非要一樣,反而限制了#include的能力。另外C99標准中有這樣關#include有這樣一句話:A #include directive shall identify a header or source file that can be processed by the implementation.也就是說指要編譯器支持的文件,#include指令應該都可以包含。一般編譯器的功能都挺強大,足夠滿足我們需求,至於遇到特殊情況的大佬,大佬也會自行解決。

聊到頭文件 那就有必要對#include指令進行說明:

#include指令常用格式如下:

#include , #include "fileName" #include token(這里token一般指宏的名字)

如果在源文件#include包含有一個static變數或函數的定義的頭文件,那麼這個源文件也可以訪問這個static變數或函數。原因就是這個源文件把對應的文件包含進來,那這些static變數或函數就相當於在這個源文件中定義,當然源文件就可以訪問了。

㈥ C語言中頭文件和源文件寫法有什麼區別

相同點:
頭文件與源代碼都是源文件,都用純文本文件存儲,都需要遵照C/C++語言規范來寫,都可以使用類型定義和常、變數定義,都可以包含函數的聲明和實現,都能包含宏定義,都使用相同的調用規范。

不同點:
C/C++的編譯器規定源代碼文件必須包含函數入口,即main函數,或者winmain函數。而頭文件不得包含函數入口,也就是說,頭文件不可以單獨編譯成一個程序,僅僅包含程序片斷或者僅僅定義常、變數。

關聯:
頭文件是專為源代碼調用而寫的靜態包含文件,可被源代碼文件中的#include編譯預處理指令解釋,而將頭文件完整拷貝到源代碼的指令處,從而在編譯時相當於在源代碼中插入了函數聲明或者實現。

某些頭文件包含了靜態庫中的函數調用聲明,包含了LIB文件的調用信息,編譯時靜態鏈接進程序;而某些頭文件是專為方便API調用而寫的,裡麵包含了動態鏈接庫的調用信息和規范,只有在運行時將DLL載入內存提取函數執行。

也就是說,其實你將頭文件里的信息完全寫到源代碼里,是可以實現完全相同的功能的。如果你想要學寫頭文件,可以參照標准C/C++庫的h文件。

㈦ c語言中頭文件和源文件一定要在同一個文件夾裡面嗎

c語言中頭文件和源文件可以不在同1個文件夾,在引用的時候加入頭文件的絕對路徑就可以。

系統自帶的頭文件,用<>包含;

自定義的頭文件,用""包含;

C程序的頭文件以「.h」為後綴。以下是假設名稱為graphics.h的頭文件:

#ifndefGRAPHICS_H//作用:防止graphics.h被重復引用

#defineGRAPHICS_H

#include<....>//引用標准庫的頭文件

...

#include"..."//引用非標准庫的頭文件

...

voidFunction1(...);//全局函數聲明

...

inline();//inline函數的定義

...

classBox//作用:類結構聲明

{

...

};

#endif

(7)c語言源文件頭文件擴展閱讀

c語言中頭文件使用原理

在程序中要使用頭文件,需要使用C預處理指令#include來引用它。前面我們已經看過stdio.h頭文件,它是編譯器自帶的頭文件。

引用頭文件相當於復制頭文件的內容,但是我們不會直接在源文件中復制頭文件的內容,因為這么做很容易出錯,特別在程序是由多個源文件組成的時候。

AsimplepracticeinC或C++程序中,建議把所有的常量、宏、系統全局變數和函數原型寫在頭文件中,在需要的時候隨時引用這些頭文件。

引用頭文件的語法

使用預處理指令#include可以引用用戶和系統頭文件。它的形式有以下兩種:

#include<file>

㈧ C語言里頭文件和源文件是什麼

一般來說
頭文件里包含:
1。引用的頭文件
2。(外部)全局變數聲明
3。結構體,類,枚舉,宏定義
4。(外部)函數聲明
5。......

源文件包含:
1。引用的頭文件
2。全局變數定義
3。函數實現
4。僅本文件內使用的全局變數
5。也可以包含頭文件的全部內容
6。......

㈨ C語言代碼的頭文件與源文件有什麼區別

  1. 頭文件和源文件在本質上沒有任何區別。 只不過一般:後綴為 .h 的文件是頭文件,內含函數聲明、宏定義、結構體定義等內容。後綴為 .c 的文件是源文件,內含函數實現,變數定義等內容。而且是什麼後綴也沒有關系,只不過編譯器會默認對某些後綴的文件採取某些動作。這樣分開寫成兩個文件是一個良好的編程風格。

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

①預處理階段

②詞法與語法分析階段

③ 編譯階段,首先編譯成純匯編語句,再將之匯編成跟CPU相關的二進制碼,生成各 個目標文件 (.obj文件)

④連接階段,將各個目標文件中的各段代碼進行絕對地址定位,生成跟特定平台相關 的可執行文件,當然,最後還可以用obj生成純二進制碼,也就是去掉了文件格 式信 息。(生成.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++中提倡的「介面對外,實現代碼不可見」。有利於庫文件的轉發.

熱點內容
冰箱壓縮機冰堵 發布:2024-12-28 23:34:32 瀏覽:705
java版的微信 發布:2024-12-28 23:19:20 瀏覽:453
安卓手機怎麼恢復原來的圖像 發布:2024-12-28 22:55:42 瀏覽:765
安卓怎麼下載蘋果的游戲 發布:2024-12-28 22:48:23 瀏覽:664
java的excel導入導出 發布:2024-12-28 22:41:55 瀏覽:688
吃雞和王者哪個更吃手機配置 發布:2024-12-28 22:41:45 瀏覽:316
緩存軟體有哪些 發布:2024-12-28 22:40:55 瀏覽:208
android聊天功能 發布:2024-12-28 22:39:53 瀏覽:672
私人存儲空間 發布:2024-12-28 22:28:53 瀏覽:616
可讀可寫下電自動清除的存儲器 發布:2024-12-28 22:28:03 瀏覽:645