含義
右圖很好的表達了"檔案包含"的含義,a圖為檔案f1.c,它有一個#include “f2.c”命令,後面跟著檔案內容,記為程式1.圖b為另一個檔案f2.c,檔案內容以程式2表示。在預編譯時,對要#include命令進行"檔案包含"處理,將f2.c的全部內容複製插入到#include “f2.c” 命令處,即f2.c被包含到f1.c中,得到如圖c所示的結果。在編譯時,將"包含"以後的f1.c(如圖c)作為一個源檔案進行編譯處理。
兩種格式區別
檔案包含有兩種格式,分別是:#include "file" 和 #include <file>
這兩格式的區別在於:
1.使用雙引號,系統首先到當前目錄下查找被包含的檔案,如果沒找到,再到系統指定的"包含檔案目錄"(由用戶在配置環境時設定)去找。
2.使用尖括弧:直接到系統指定的"包含檔案目錄"去查找。
通常使用雙引號比較保險
檔案包含優點
一個大程式,通常分為多個模組,並由多個程式設計師分別編程。有了檔案包含處理功能,就可以將多個模組共用的數據(如符號常量和數據結構)或函式,集中到一個單獨的檔案中。這樣,凡是要使用其中數據或調用其中函式的程式設計師,只要使用檔案包含處理功能,將所需檔案包含進來即可,不必再重複定義它們,從而減少重複勞動和定義不一致造成的錯誤。
例子
檔案F1.c
檔案F2.c
在VC++6.0的運行結果為:
檔案包含特點
檔案包含的特點:
① 編譯預處理時,預處理程式將查找指定的被包含檔案,並將其複製插入到#include命令出現的位置上
② 常用在檔案頭部的被包含檔案,稱為“標題檔案”或“頭部檔案”,常以“h”(head)作為後綴,簡稱頭檔案。在頭檔案中,除可包含宏定義外,還可包含外部變數定義、結構類型定義等。
③ 一條包含命令,只能指定一個被包含檔案。如果要包含多個檔案,則要用多條包含命令。例如,檔案f1.h中要使用到檔案f2.h和檔案f3.h的內容,則可在檔案f1.h中用兩個檔案包含命令分別包含檔案f2.h和檔案f3.h,即在檔案f1.h中定義:
#include "f2.h"
#include "f3.h"
在使用多個#include命令時,順序是一個值得注意的問題。上例中,如果檔案f1.h包含檔案f2.h,而檔案2要用到檔案f3.h,則在f1.h中#include定義的順序應該是:
#include "f3.h"
#include "f2.h"
這樣檔案f1.c和檔案f2.h都可以使用檔案f3.h的內容。
④ 檔案包含可以嵌套,即被包含檔案中又包含另一個檔案。例如,檔案f2.h中要使用到檔案f1.h的內容,檔案f3.h要使用到檔案f2.h的內容,則可在檔案f2.h中用#include "f1.h"命令,在檔案f3.h中用#include "f2.h"命令,即定義如下:
檔案f1.h:
{
… …
}
檔案f2.h:
#include "f1.h"
int max()
{
… …
}
檔案f3.h:
#include "f2.h"
main
{
… …
}
#include命令一般用來把C語言提供的標準庫頭檔案(如stdio.h、math.h)包含到程式中。程式設計師也可以自己定義一個頭檔案,寫入一些常用的函式原型、宏定義、結構和聯合類型定義等,然後將它包含到程式中。例如:#include "stdio.h" (標準輸入/輸出函式館)
#include "math.h" (數學函式館)
#include "stdlib.h" (常用函式館)
#include "string.h" (字元串處理函式館)