#include“標頭檔案“的相對路徑是相對誰的路徑
今天發現一個不錯的帖子。轉到自己的部落格,收藏。
要了解vc中使用#include命令包含標頭檔案所搜尋的路徑,必須先了解vc中的幾種路徑:
1. 系統路徑
系統路徑在vc中是"Tools->Options->Directories"中"Include files"指定的路徑。
開啟此對話方塊會發現預設有這幾條路徑:
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
我們可以在這裡新增,這樣我們自己新增的路徑也會成為系統路徑。新增的格式必須按照上面來寫。
2. 當前路徑
當前路徑是指vc工程中工程檔案所在的路徑,即.dsw檔案所在路徑。
網上有很多朋友說,當前路徑是指.cpp檔案所在路徑,經過測試,這個說法也是正確的。但是使用vc編譯時,是不正確的。
3. 附加路徑
附加路徑是指在"Project->Settings->C/C++->Preprocessor->Additional include directories "中指定的路徑。
此路徑預設為空,我們可以在此處填寫需要路徑,比如:在此處填入"C:\123\",(不要引號),那麼附加路徑就會變成"C:\123\" 。
上面的1,3路徑,我們均可以自己編輯。在編輯過程中,可以使用絕對路徑,也可以使用相對路徑。
比如,在新增系統路徑時,可以這樣填寫:
.\SRC\ 這樣寫表示,當前目錄中的SRC資料夾;
..\SRC\ 這樣寫表示,當前目錄的上一層目錄中SRC資料夾;
...\SRC\ 這樣寫表示,當前目錄下 ..\SRC\\ 路徑,當然這種寫法已經和第一種重疊了。
這種相對路徑的寫法,vc會自動幫我們轉化為絕對路徑。
在新增附加路徑時,其相對路徑的寫法和系統路徑是一致的。
在vc中使用#include 命令,有三種形式:
1. #include <file.h>
vc執行這條指令時,它會在系統目錄中去查詢 file.h 檔案。
在此條碼命令中,vc不會去當前路徑和附加路徑中查詢檔案。
2. #include "file.h"
vc執行這條指令時,它首先會搜尋附加路徑,如果沒有則會搜尋系統路徑,如果還沒有則會去搜索當前路徑。
3. #include "directory\file.h"
vc執行這條指令時,它會去指定的路徑去查詢檔案,如果沒找到,它不會繼續查詢。
#include”xxx.h”
把include資料夾(裡面是某個庫的標頭檔案)拷到自己的專案中,新增標頭檔案時需要使用#include”include\xxx.h”方式,如果打算使用#include”xxx.h”方式。
解決方法:
- 專案屬性->C++>常規->附加包含目錄:$(ProjectDir)\include
- 新增類庫,在專案屬性->連結器>常規->附加庫目錄:$(ProjectDir)\lib
其中:\$(ProjectDir)代表你的專案所在目錄:x:\…\projectname
所有巨集定義可以在“附加包含目錄”或者“附加庫目錄”編輯介面,點選巨集“(M)>>”檢視