2016年4月8日 星期五

include找不到父路徑的檔案

很神奇的事情,include的路徑順序在引號的狀況下應該是

前置處理器會依此順序搜尋 Include 檔:
  1. 在包含 #include 陳述式之檔案所在的相同目錄中。
  2. 在目前開啟 Include 檔的目錄中,依開啟的相反順序搜尋檔案。搜尋會從 Include 檔的父目錄開始,並向上繼續搜尋所有上層 Include 檔的目錄。
  3. 依循每個 /I 編譯器選項所指定的路徑。
  4. 依循 INCLUDE 環境變數所指定的路徑。


我的一個檔案R.h需要被include資料夾結構是這樣

F1
>R.h
>F2
>>A.cpp
>>vs專案檔

竟然,在A.cpp裡面不能
#include R.h
還得
#include "..\R.h"

更神奇的是,專案裡面已經存在了R.h還可以再新增一個R.h(但他的實體路徑在F2/R.h, 在專案中兩個R.h都可以看到..

對於找不到R.h的解釋可能是專案檔以外的目錄不在搜尋範圍內(這東西會有這種架構是F2依不同的vs版本有多個資料夾,eg:F2-2008, F2-2010, F2-2012。但這些都共用同一群.cpp與.h檔案,放在F1底下)


沒有留言:

張貼留言