2014-11-06 34 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

相关问题