2011-01-06 136 views
0

在MSVS中,當我#include <someHeader>它在與包含#include「someheader」的標題不同的文件夾中搜索。同樣的事情應該在Xcode中,但它似乎不起作用。由於這個原因,我與本地頭文件與std頭文件(String.h等)具有相同的名稱衝突,而且我不能包含std頭文件。我試圖改變項目選項「總是搜索用戶路徑」,但它仍然無效。從這個選項的幫助消息說,這將解決我的問題,但...xcode包含路徑衝突

如果啓用,既#包括 <header.h>風格和的#include 「header.h」式的指令之前的「頭文件搜索 路徑」將 搜索在「用戶頭 搜索路徑」的路徑,其結果是用戶 標題(如自己的STRING.H 頭)將不得不使用的#include時優先 系統頭 <header.h>。這是通過在「用戶標題搜索路徑」中提供的路徑使用 分隔標誌完成的。如果 殘疾人和你的編譯器完全支持 單獨的用戶路徑,用戶 頭將只與

包括「header.h」風格的預處理指令訪問。

出於向下兼容性的原因, 此設置默認啓用, 但禁用它強烈建議 。 [ALWAYS_SEARCH_USER_PATHS]

你知道如何解決這個問題嗎?我真的不想更改我的頭文件名稱或從項目設置中刪除搜索路徑,並使用相對路徑到本地文件(../../../SomeFolder/SomeHeader.h)。

+0

編譯器命令行的項目建成時使用可能會給某人足夠的細節來幫助解決這個問題。這應該可以從一些構建日誌中獲得。 – 2011-01-06 19:51:52

+0

我試圖預處理一個虛擬CPP文件只有一個包括包含本地頭文件:| – Felics 2011-01-06 19:57:04

+0

命令行:setenv LANG en_US.US-ASCII setenv PATH「/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin「 /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -x C++ -arch armv7 -fmessage-length = 0 -pipe -Wno-trigraphs -fascal-strings -O0 -Wreturn-type -Wunused-variable -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk -mfix-and-continue -gdwarf-2 -mthumb -miphoneos-version -min = 4.2 -iquote – Felics 2011-01-06 20:01:16

回答

1

我通過改變從H到HPP所有頭延伸......這是不是一個真正的解決方案解決了這個問題,但我不停的文件名和我現在解決了這個問題,:)