2012-12-28 18 views
3

想象一下,在兩個不同的目錄中有兩個something.h。您無法寫入這些目錄並且沒有root訪問權限。如何設置衝突頭的優先級C++

你有一些代碼的作用:

#include <something.h> 

如何指定使用something.h在一個特定的目錄,而忽略其他?

+0

熱潮!增加了20%! – madreblu

回答

1

嘗試使用:
#include "../directory/something.h"
注意,GCC查找使用Search Path頭。
您也可以要求GCC在指定的目錄中查找頭文件。使用-iquote dir,將目錄dir添加到要搜索頭文件的目錄列表頭部。

+0

把我想要的.h的完整路徑不起作用。 – madreblu

+0

嘗試使用'-iquote' – bane

+0

也看到這一點:[目錄選項](http://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html) – bane

1

通常,有資格搜索什麼被視爲系統的目錄列表包括(在#include中使用尖括號),作爲一組-I切換到編譯器提供。通常包括目錄在makefile或項目文件中指定。

許多(但不一定是全部)編譯器將履行列出的目錄順序爲include目錄 - 所以你應該能夠在你的makefile改變這種順序來選擇自己的喜好。然而,在一些編譯器中可能會有困難,因爲一些目錄被認爲總是包含在內(例如,默認情況下,gcc假設您包含/usr/include)。 換句話說,這是非常具體的實現。

如果您使用的不是尖括號,但雙引號,那麼你可以簡單地指定所需的文件一樣,直接#include "dir/file.h"

+0

一個版本是在/ usr/include/foo加入/。另一個在我的主目錄中。當我使用'#include'完整路徑指定主目錄頭文件''時,它仍然選擇/ usr/include一個 – madreblu

+0

@madreblu您是否也嘗試使用'-I'選項? –

+0

是的,即使使用-I,它仍然會查看/ usr/include/foo/one – madreblu