gcc 編譯時 include 搜索路徑


這是一個不復雜的問題;但是網上很多回答都不全面;偶找了一個比較全面的(測試過):

#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指定的搜索目錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM