#include < > 和#include ” ”有什么區別?
時(shi)間:2019-05-30 來源:華清(qing)遠(yuan)見
C語言頭文件
C語言中頭(tou)(tou)(tou)文件(jian)的(de)(de)擴展名為 .h的(de)(de)頭(tou)(tou)(tou)文件(jian),頭(tou)(tou)(tou)文件(jian)中包含(han)了函數(shu)的(de)(de)聲明和宏定義,頭(tou)(tou)(tou)文件(jian)可(ke)以被(bei)多個源文件(jian)引用。在C語言中有兩種(zhong)類(lei)型的(de)(de)頭(tou)(tou)(tou)文件(jian),一種(zhong)是編譯器自帶的(de)(de)頭(tou)(tou)(tou)文件(jian),另(ling)一種(zhong)就(jiu)是程序員自己編寫的(de)(de)頭(tou)(tou)(tou)文件(jian)。
在(zai)C程序中如果要使用頭文件(jian),則必須(xu)使用頭文件(jian)包含命(ming)令(ling) #include ,來引入對(dui)應的(de)頭文件(jian)(.h文件(jian))。#include 是C語言(yan)預(yu)處理指令(ling)的(de)一種。
#include 的(de)處理過(guo)程很簡單,就是將頭文(wen)件的(de)內容插入到該命(ming)令(ling)所在的(de)位置(zhi),從(cong)而把(ba)頭文(wen)件和當(dang)前源文(wen)件連接成一個源文(wen)件,這與復制(zhi)粘貼(tie)的(de)效果相同。
引(yin)用頭文件的語法
使(shi)用(yong)預處(chu)理指(zhi)令 #include 可(ke)以(yi)引用(yong)用(yong)戶和系統頭(tou)文件。它的(de)形式有(you)以(yi)下兩種(zhong):
#include <file>
這(zhe)種形式用于引用系統(tong)頭文(wen)件。它在系統(tong)目錄(lu)的(de)標準列表中搜(sou)索名(ming)為 file 的(de)文(wen)件。在編(bian)譯源(yuan)代(dai)碼時,通過 -I 選(xuan)項(xiang)把目錄(lu)前置(zhi)在該列表前。
#include "file"
這種形式用(yong)于引用(yong)用(yong)戶頭(tou)文(wen)件。它在(zai)包含當前文(wen)件的目錄中(zhong)搜索名為 file 的文(wen)件。在(zai)編譯(yi)源代碼時,通過 -I 選項(xiang)把目錄前置在(zai)該列表前。
使(shi)用尖(jian)括(kuo)號< >和雙引號" "的(de)區(qu)別在于頭(tou)文件(jian)的(de)搜索路徑不同(tong):
使用尖括號< >,編譯器會到系統路徑下查找頭文件(jian);
而使用(yong)雙引號" ",編譯器首先(xian)在當前(qian)目錄下(xia)查(cha)找頭文(wen)件,如果(guo)沒有找到(dao),再到(dao)系統路徑下(xia)查(cha)找。
也就是說,使(shi)用(yong)(yong)雙引(yin)號(hao)比使(shi)用(yong)(yong)尖括號(hao)多了(le)一個查(cha)找(zhao)路徑,它的(de)功能更為(wei)強大(da)。
在C語言編程中(zhong),我們習(xi)慣(guan)使用(yong)尖括號(hao)來引入標準頭(tou)(tou)文(wen)件(jian)(jian)(jian),而使用(yong)雙引號(hao)來引入自定義頭(tou)(tou)文(wen)件(jian)(jian)(jian)(自己編寫的(de)頭(tou)(tou)文(wen)件(jian)(jian)(jian)),這(zhe)樣一眼(yan)就(jiu)能(neng)看(kan)出頭(tou)(tou)文(wen)件(jian)(jian)(jian)的(de)區別。
關于(yu) #include 用法的注意事項:
一(yi)個 #include 命令(ling)只能(neng)包(bao)含一(yi)個頭(tou)(tou)文件,多(duo)個頭(tou)(tou)文件需(xu)要多(duo)個 #include 命令(ling)。
同(tong)一個(ge)頭文(wen)件可以被多(duo)次(ci)引入(ru),多(duo)次(ci)引入(ru)的效(xiao)果和一次(ci)引入(ru)的效(xiao)果相同(tong),因為頭文(wen)件在代碼層面有(you)防止重復引入(ru)的機制。
#ifndef _HEAD_H
#define _HEAD_H
#endif
文(wen)件(jian)包含允(yun)許嵌套(tao),也就是說(shuo)在一個被(bei)包含的文(wen)件(jian)中又可以包含另(ling)一個文(wen)件(jian)。
#include 用法舉例

在(zai)add.c中(zhong)定(ding)義了(le)add()函(han)數,在(zai)head.h中(zhong)聲明(ming)了(le)add()函(han)數,main.c中(zhong),#include<stdio.h>引(yin)用標(biao)準輸(shu)入(ru)(ru)輸(shu)出(chu)頭文(wen)件,#include”head.h”引(yin)用我們自己寫的(de)head.h頭文(wen)件,main()函(han)數是(shi)程序的(de)入(ru)(ru)口,printf()函(han)數是(shi)標(biao)準輸(shu)出(chu)函(han)數,它(ta)的(de)作用是(shi)向終端輸(shu)出(chu)若干個任意類型的(de)數據(ju),add()函(han)數在(zai)add.c中(zhong)定(ding)義了(le),在(zai)main.c中(zhong)的(de)main()函(han)數中(zhong)進行了(le)調用。