gcc 編譯時 include 搜索路徑

這是一個不復雜的問題;可是網上不少回答都不全面;偶找了一個比較全面的(測試過):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指定的搜索目錄。

—————— 不管在哪裏作什麼,只要堅持服務、創新、創造價值,其餘的東西天然都會來的。
相關文章
相關標籤/搜索