和#include ” ”有什么區(qū)" />
當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > #include < > 和#include ” ”有什么區(qū)別?
C語言頭文件
C語言中頭文件的擴(kuò)展名為 .h的頭文件,頭文件中包含了函數(shù)的聲明和宏定義,頭文件可以被多個(gè)源文件引用。在C語言中有兩種類型的頭文件,一種是編譯器自帶的頭文件,另一種就是程序員自己編寫的頭文件。
在C程序中如果要使用頭文件,則必須使用頭文件包含命令 #include ,來引入對應(yīng)的頭文件(.h文件)。#include 是C語言預(yù)處理指令的一種。
#include 的處理過程很簡單,就是將頭文件的內(nèi)容插入到該命令所在的位置,從而把頭文件和當(dāng)前源文件連接成一個(gè)源文件,這與復(fù)制粘貼的效果相同。
引用頭文件的語法
使用預(yù)處理指令 #include 可以引用用戶和系統(tǒng)頭文件。它的形式有以下兩種:
#include <file>
這種形式用于引用系統(tǒng)頭文件。它在系統(tǒng)目錄的標(biāo)準(zhǔn)列表中搜索名為 file 的文件。在編譯源代碼時(shí),通過 -I 選項(xiàng)把目錄前置在該列表前。
#include "file"
這種形式用于引用用戶頭文件。它在包含當(dāng)前文件的目錄中搜索名為 file 的文件。在編譯源代碼時(shí),通過 -I 選項(xiàng)把目錄前置在該列表前。
使用尖括號< >和雙引號" "的區(qū)別在于頭文件的搜索路徑不同:
使用尖括號< >,編譯器會(huì)到系統(tǒng)路徑下查找頭文件;
而使用雙引號" ",編譯器首先在當(dāng)前目錄下查找頭文件,如果沒有找到,再到系統(tǒng)路徑下查找。
也就是說,使用雙引號比使用尖括號多了一個(gè)查找路徑,它的功能更為強(qiáng)大。
在C語言編程中,我們習(xí)慣使用尖括號來引入標(biāo)準(zhǔn)頭文件,而使用雙引號來引入自定義頭文件(自己編寫的頭文件),這樣一眼就能看出頭文件的區(qū)別。
關(guān)于 #include 用法的注意事項(xiàng):
一個(gè) #include 命令只能包含一個(gè)頭文件,多個(gè)頭文件需要多個(gè) #include 命令。
同一個(gè)頭文件可以被多次引入,多次引入的效果和一次引入的效果相同,因?yàn)轭^文件在代碼層面有防止重復(fù)引入的機(jī)制。
#ifndef _HEAD_H
#define _HEAD_H
#endif
文件包含允許嵌套,也就是說在一個(gè)被包含的文件中又可以包含另一個(gè)文件。
#include 用法舉例
在add.c中定義了add()函數(shù),在head.h中聲明了add()函數(shù),main.c中,#include<stdio.h>引用標(biāo)準(zhǔn)輸入輸出頭文件,#include”head.h”引用我們自己寫的head.h頭文件,main()函數(shù)是程序的入口,printf()函數(shù)是標(biāo)準(zhǔn)輸出函數(shù),它的作用是向終端輸出若干個(gè)任意類型的數(shù)據(jù),add()函數(shù)在add.c中定義了,在main.c中的main()函數(shù)中進(jìn)行了調(diào)用。