2014-11-06 87 views

回答

1

首先.h永遠不會編譯只有源文件被編譯。您可以在源文件中包含該標題的相對路徑。對於如:_

sys.cpp 

#include "../header/sys.h" 

編輯: -

@Lightness比賽在軌道上: -

我在我的童年教訓是,當我們編譯程序第一前置處理器進入畫面而膨脹.h文件在任何地方包含在sorce文件中。然後生成的源文件被提供給編譯器,然後進一步處理。所以編譯器甚至不知道.h文件是什麼。請糾正我,如果我忘記/ MIS somethinbg

+0

標題是絕對編譯的。這只是它們間接編譯而已。 – 2014-11-06 12:21:09

+0

我的猜測是@ravi意味着通常翻譯單元是用源文件創建的,而不是純粹的包含文件(包含文件是任何使用'#include'指令的文件)。也就是說,如果有指示的話,編譯器不會太在意文件擴展名,並且處理器允許任何東西。 – didierc 2014-11-06 12:28:34

+0

可以在這裏寫一個簡單的makefile代碼嗎? :\ 示例頭文件有prime.h和src文件有prime.cpp和main.cpp – user3551743 2014-11-06 12:38:23

2

理解例如:

g++ -I header src/main.cpp src/other.cpp 

現在您的.cpp文件可以做這樣的事情:

#include <blah.h> 

而且他們會發現header/blah.h

+0

是否可以在makefile中執行? – user3551743 2014-11-06 12:22:39

+1

當然可以。試試'CXXFLAGS = -Iheader'。 – 2014-11-06 12:24:42

+0

omg,認真,因爲我是新的這些g ++可以讓我看看完整的makefile代碼嗎? :\例如:頭文件夾將具有> prime.h和src文件夾將具有prime.cpp和main.cpp。 – user3551743 2014-11-06 12:27:45

相關問題