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

c語言file頭文件

發布時間: 2025-01-04 11:18:28

❶ C語言定義一個頭文件的格式和引用它的方法

擴展名為.h的文件,在C語言中被稱為header file, 也就是頭文件。

頭文件的數據格式就是普通的文本文件,可以通過新建文本文件(txt),再把擴展名改為.h的方式創建,在此不贅述。


一、頭文件內容格式。

頭文件內容並沒有固定的格式要求,不過一般為防止嵌套引用給編譯器帶來死鎖或者沒必要的開銷,一般約定整個頭文件中所有內容在一個條件編譯下,即如下格式:

#ifndef 宏名

#define 宏名

//頭文件主體

#endif

這樣可以保證一個頭文件在一個源文件中最多隻被引用一次。為避免宏名重復,宏名一般由頭文件名轉換而來,如果頭文件名是xxx.h,那麼宏名一般定義為:

_XXX_H_

即前後各加一個下劃線,同時文件名中除數字、字母、下劃線以外的字元均轉換為下劃線(_)。


頭文件主體中內容同樣沒有做強制約定,可以出現在源文件(.c)中的任何代碼均可以放在頭文件中。不過一般情況下可以包括以下幾種內容:

1 引用其它頭文件,格式為

#include <xxx.h>

#include "xxx.h"

二者區別在介紹頭文件引用時再詳細介紹。

2 定義私有類型。比如

typedef unsigned long U32; //為了簡寫而給無符號32位整型定義一個新的名字

struct xxx {};

也可以是enum, union等復雜類型。

3 宏定義。比如

#define MAX(a,b) (a>b?a:b)

4 函數聲明。比如

void test_function(void);

5 全局變數聲明。比如

extern int global_var;

6 如果有一個靜態全局變數需要在不同源文件中使用,但各文件之間互不相關。那麼可以放在頭文件中。如:

static int gs_var = 3;


7 對於支持C99規范的C編譯器,還可以把內聯函數定義在頭文件中。比如

staticinlineintget_min(inta,intb)
{
if(a>b)returnb;
returna;
}

以上是常見的頭文件中的元素。但實際上頭文件中也可以放全局變數的定義,全局函數的實現等。但是頭文件中一旦定義了這樣的元素,這個頭文件在一個工程中只能被一個文件引用,否則編譯器會報重復定義的錯誤。

比如如果有一個規模很大的常量數組,比如一副圖片的二進制值,如果把它定義在源文件中,就會顯得很冗餘,因為並不會經常修改。 這時可以定義在頭文件中,只在一個源文件中引用,當有多幅圖片需要隨時更換時,也可以通過簡單的在源文件中修改引用的頭文件名達到修改的目的。


二、頭文件的引用。

頭文件引用的方法其實之前已經大致說過了,在源文件中引用頭文件和在頭文件中引用的格式是一樣的:

#include<xxx.h>或者

#include "xxx.h"

xxx為頭文件名。

用<>和""是有一定的區別的。在編譯器查找頭文件的時候,會在兩個區域分別查找。

一個是系統頭文件區域,即類似於stdio.h一類的C庫函數頭文件區。

另一個是自定義頭文件區,比如當前目錄,以及其它自定義的目錄。

用<>時,編譯器會先在系統區域查找,然後再查找自定義區域。而用""時則相反。

由於一般並不推薦自定義頭文件名與系統頭文件名相同(容易引起歧義並難以維護),所以先後順序並不是太重要,尤其在硬體速度越來越快的今天,使用哪種符號引用頭文件已經差別很小了。

熱點內容
萊克發的工資卡密碼是多少 發布:2025-05-14 16:57:10 瀏覽:177
方舟怎麼用自己的存檔進入別人的伺服器 發布:2025-05-14 16:46:25 瀏覽:876
微博視頻高清上傳設置 發布:2025-05-14 16:38:41 瀏覽:548
資料庫圖書管理設計 發布:2025-05-14 16:33:52 瀏覽:378
php開發的網頁 發布:2025-05-14 16:22:03 瀏覽:477
伺服器內存跑滿了怎麼回事 發布:2025-05-14 16:21:16 瀏覽:224
微信qq音樂緩存 發布:2025-05-14 16:16:16 瀏覽:469
c語言回收內存 發布:2025-05-14 16:16:08 瀏覽:144
2021國產安卓頂級旗艦買哪個 發布:2025-05-14 16:15:36 瀏覽:300
linux自學視頻 發布:2025-05-14 16:14:49 瀏覽:256