共找到2條詞條名為頭文件的結果 展開
- 包含功能函數、數據介面聲明的載體文件
- stdio.h
頭文件
包含功能函數、數據介面聲明的載體文件
頭文件在計算機C語言家族程序中被大量使用,主要作用在於多個代碼文件全局變數的重用、防止定義的衝突,對各個被調用函數給出一個描述,其本身不需要包含程序的邏輯實現代碼,它只起描述性作用,用戶程序只需要按照頭文件中的介面聲明來調用相關函數或變數,鏈接器會從庫中尋找相應的實際定義代碼。
一般而言,每個C++/C程序通常由頭文件和定義文件組成。頭文件作為一種包含功能函數、數據介面聲明的載體文件,主要用於保存程序的聲明,而定義文件用於保存程序的實現。
一般在一個應用開發體系中,功能的真正邏輯實現是以硬體層為基礎,在驅動程序、功能層程序以及用戶的應用程序中完成的。
從以上結構圖來看,頭文件是用戶應用程序和函數庫之間的橋樑和紐帶。在整個軟體中,頭文件不是最重要的部分,但它是C語言家族中不可缺少的組成部分。編譯時,編譯器通過頭文件找到對應的函數庫,進而把已引用函數的實際內容導出來代替原有函數。進而在硬體層面實現功能。
C++/C程序的頭文件以“.h”為後綴。以下是假設名稱為graphics.h的頭文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #ifndef GRAPHICS_H//作用:防止graphics.h被重複引用 #define GRAPHICS_H #include<....>//引用標準庫的頭文件 ... #include"..."//引用非標準庫的頭文件 ... void Function1(...);//全局函數聲明 ... inline();//inline函數的定義 ... classBox//作用:類結構聲明 { ... }; #endif |
從以上例子可以看出,頭文件一般由四部分內容組成:
(1)頭文件開頭處的版權和版本聲明;
(2)預處理塊;
(3)inline函數的定義;
(4)函數和類結構聲明等。
在頭文件中,用ifndef/define/endif結構產生預處理塊,用#include格式來引用庫的頭文件。頭文件的這種結構,是利用C語言進行開發軟體所通常具備的,屬於公有知識。
conio.h不是C標準庫中的頭文件,是vc下的一個頭文件。
conio是Console Input/Output(控制台輸入輸出)的簡寫,其中定義了通過控制台進行數據輸入和數據輸出的函數,主要是一些用戶通過按鍵盤產生的對應操作,比如getch()函數等等。
包含的函數
cgets(char *);
cprintf(const char *, ...);
cputs(const char *);
cscanf(const char *,...);
inp(unsigned short);
inpw(unsigned short);
getch(void);
getche(void);
kbhit(void);
outp(unsigned short,int);
outpw(unsigned short,unsigned short);
putch(int);
ungetch(int);
什麼樣的內容適合放在頭文件里?
對於具有外部存儲類型的標識符,可以在其他任何一個源程序文件中經聲明后引用,因此用戶完全可以將一些具有外部存儲類型的標識符的聲明放在一個頭文件中。具體地說,頭文件中可以包括:用戶構造的數據類型(如枚舉類型),外部變數,外部函數、常量和內聯函數等具有一定通用性或常用的量。而一般性的變數和函數定義不宜放在頭文件中。
例如:#include中的頭文件stdio.h作用是讓鏈接器通過頭文件里的函數聲明找到函數實際代碼所在的位置,即所在的庫文件,這樣才能使用該函數的實際代碼,函數的實際代碼的實現過程是先讓鏈接器通過頭文件里函數的申明找到函數實際代碼所在的位置即所在的庫文件,再通過#include語句把鏈接器所找到的函數實際代碼用鏈接器把函數的實際代碼鏈接到當前文件即所要執行的程序中。
當然有些函數的使用不需要提供頭文件,但是在ISO/ANSI C已經對有些函數的使用必須提供哪些頭文件制定了標準。
傳統C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include #include #include//定義錯誤碼 #include//浮點數處理 #include #include//參數化輸入/輸出 #include//數據流輸入/輸出 #include #include #include//定義數學函數 #include #include #include #include #include #include//寬字元處理及輸入/輸出 #include |
標準C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include #include #include #include #include #include #include #includestdio>//C語言輸入輸出工具 #include #include #include #include #include//異常處理類 #include #include #include #include
#include #include #include #include #include #include #include #include #include #include #include #include #include #include //STL動態數組容器 #include #include |
在C++中,標準庫的命名空間為std,因而包含了上述頭文件時,一般會使用下列語句:
1 | usingnamespacestd; |
1 2 3 4 5 6 | #include #include #include #include #include #include |