這是一個不復雜的問題;但是網上很多回答都不全面;偶找了一個比較全面的(測試過):
#include有兩種形式,例如如下:
#include <syshead.h>
#include "userhead.h"
用尖括號表示的是包含系統的頭文件,用雙引號包含的是用戶自己的頭文件。
下面是使用#include時的一些規則:
1)使用<>包含的頭文件一般會先搜索-I選項后的路徑(即用gcc編譯時的-I選項),之后就是標准的系統頭文件路徑。
2)而用""號包含的頭文件會首先搜索當前的工作目錄,之后的搜索路徑才是和<>號包含的頭文件所搜索的路徑一樣的路徑。
3)在unix系統中,一般標准的頭文件路徑為:
/usr/local/include
/usr/lib/gcc-lib/target/version/include
/usr/target/include
/usr/include
4)一般有兩條獨立的頭文件搜索路徑鏈。一條是-I后面指示的路徑,另一條是系統頭文件路徑和以-prefix, -withprefix,和-idirafter后操作的目錄。
5)如果gcc編譯的是c++的程序,那么在搜索上面所說的目錄前,預處理器會首先搜索/usr/include/g++v3目錄,v3是你的gcc中c++的版本。
6)在頭文件中運行增加路徑名,例如:#include <sys/time.h>,那么就會在搜索的系統目錄的sys目錄下尋找time.h文件。
7)一般會用斜線來作為目錄的分割符,甚至有些系統使用不同的字符作為分割符(例如反斜線)。
8)#include后面所包含的文件名就是文件名,例如abc*d.h這個文件,必須就要有abc*d.h這個文件,而不是abckkkd.h這些文件,*不能解釋成任
何的字符的意思,而是實實在在的一個字符。
9)可以使用一個指定的名字作為#include指令后面的頭文件,例如:
#define BOGHEADER "bog_3.h"
#include BOGHEADER
10)在#include 指令的后面,除了所包含的頭文件和注釋外,不能包含其它的任何東西了。
11)#line指令不能改變當前的工作目錄。
12)-I-選項可以改變-I指定的搜索目錄。