2011-12-23 90 views
8

我正在一個項目上工作,我不知道該如何從其他目錄導入文件。下面是我的一些文件進行組織:包含來自不同目錄的頭文件?

-stdafx.h 
-core/ 
-->renderer.cpp 
-shapes/ 
-->sphere.h 
-->sphere.cpp 

如何訪問從core/renderer.cppstdafx.hshapes/sphere.h

+0

你使用什麼編譯器? – 2011-12-23 23:25:29

+0

Microsoft Visual Studio 2010 – 2011-12-23 23:26:04

+0

請謹慎使用以下建議來使用'../'表示法。請參見[頭文件的相對路徑有什麼好處](http://stackoverflow.com/questions/597318/)。 – 2011-12-24 05:58:52

回答

7

有很多方法。例如,您可以使用#include "../stdafx.h"。更常見的是將項目的根添加到包含路徑並使用#include "shapes/sphere.h"。或者在包含路徑中有一個單獨的包含標題的目錄。

+0

我該如何添加一個根? – 2011-12-23 23:31:05

+0

它在設置中的某處。正如Dave指出的那樣,這是'/ I'選項,但是你要找的東西可能是項目設置中的東西,或者它所謂的東西,有一段時間沒有看到Visual Studio。 – 2011-12-23 23:33:56

1

您可以使用相對路徑:

#include "../stdafx.h" 
#include "../shapes/sphere.h" 

或者加入你的項目目錄,以你的編譯器包含路徑和參考他們像正常:

#include "stdafx.h" 
#include "shapes/sphere.h" 

可以使用/Icommand line option添加路徑或在您的項目設置中設置路徑。

+0

如何添加項目目錄?對不起,我是新來的C++ – 2011-12-23 23:32:05

+0

我沒有Visual Studio了(大約一年左右我沒有使用它)。但是,** [本頁](http://www.steptools.com/support/stdev_docs/help/settings_vc10.html)**有一個屏幕截圖,可準確顯示路徑應添加到項目設置中的位置。 – 2011-12-23 23:43:36

0

這樣做的一個(壞)方法是在頭文件中加入一個相對路徑,作爲#include行的一部分。例如:

包括「頁眉/ myHeader.h」

包括「../moreHeaders/myOtherHeader.h」

這種方法的缺點是,它需要你反映你的目錄結構你的代碼。如果你更新你的目錄結構,你的代碼將不再工作。

一個更好的方法是告訴你的編譯器或IDE你在一些其他位置有一堆頭文件,這樣當它在當前目錄中找不到它們時,它會看到它。這通常可以通過在IDE項目設置中設置「包含路徑」或「搜索目錄」來完成。

在Visual Studio中,您可以在解決方案資源管理器中右鍵單擊您的項目,然後選擇「屬性」,然後選擇「VC++目錄」選項卡。從這裏,你會看到一個名爲「包含目錄」的行。在那裏添加你的包含目錄。

在Code :: Blocks中,轉到Project菜單並選擇「Build Options」,然後選擇「Search directories」選項卡。在那裏添加你的包含目錄。

使用g ++,可以使用-I選項來指定備用包含目錄。

G ++ -o主要-I /來源/包括main.cpp的

這種方法的好處是,如果你改變你的目錄結構,你只需要改變單一的編譯器或IDE設置而不是每個代碼文件。

相關問題