這是一個不復雜的問題;可是網上不少回答都不全面;偶找了一個比較全面的(測試過):c++
#include有兩種形式,例如以下:測試
#include <syshead.h>
#include "userhead.h"
用尖括號表示的是包含系統的頭文件,用雙引號包含的是用戶本身的頭文件。.net
下面是使用#include時的一些規則:unix
1)使用<>包含的頭文件通常會先搜索-I選項後的路徑(即用gcc編譯時的-I選項),以後就是標準的系統頭文件路徑。blog
2)而用""號包含的頭文件會首先搜索當前的工做目錄,以後的搜索路徑纔是和<>號包含的頭文件所搜索的路徑同樣的路徑。get
3)在unix系統中,通常標準的頭文件路徑爲:it
/usr/local/include
/usr/lib/gcc-lib/target/version/include
/usr/target/include
/usr/include
4)通常有兩條獨立的頭文件搜索路徑鏈。一條是-I後面指示的路徑,另外一條是系統頭文件路徑和以-prefix, -withprefix,和-idirafter後操做的目錄。io
5)若是gcc編譯的是c++的程序,那麼在搜索上面所說的目錄前,預處理器會首先搜索/usr/include/g++v3目錄,v3是你的gcc中c++的版本。編譯
6)在頭文件中運行增長路徑名,例如:#include <sys/time.h>,那麼就會在搜索的系統目錄的sys目錄下尋找time.h文件。gcc
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指定的搜索目錄。