如何定义用于包含文件的C ++宏

时间:2015-01-28 00:10:29

标签: c++ macros

我需要在我创建的每个.cpp中包含一个文件作为虚幻引擎项目的第一行...... 这不能包含在解决方案/项目中的每个cpp中,只是我想要的那些。

该文件是:

#include "./../../../Public/TemplatePlatformer.h"

虚幻引擎声明它必须是第一个包含。有没有一种方法可以对此进行宏观化,以便我只在一个地方定义它并使用每个cpp文件顶部的宏... 几乎就像这里的include txt文件一样,这样编译器认为头文件声明实际上是在顶部?

这样:

MyClass.cpp

#include "./../../../Public/TemplatePlatformer.h"
#include "MyClass.h"

...

MyClass2.cpp

#include "./../../../Public/TemplatePlatformer.h"
#include "MyClass2.h"

...

会变成这样:

MyClass.cpp

INCLUDE_CONFIG
#include "MyClass.h"

...

MyClass2.cpp

INCLUDE_CONFIG
#include "MyClass2.h"

...

2 个答案:

答案 0 :(得分:4)

你可以写:

#include INCLUDE_CONFIG

并在您的Makefile或其他方面,使用预先定义到您想要的路径的INCLUDE_CONFIG调用您的编译器;例如对于gcc,旗帜将是:

-DINCLUDE_CONFIG="./../../../Public/TemplatePlatformer.h"

答案 1 :(得分:2)

一个简单且更灵活的解决方案是创建单独的自定义头文件,其中包含此包含以及在每个.cpp开始时需要完成的任何其他操作,然后包含该文件。

因此,您要创建一个包含<{p}}的global.h

#include "./../../../Public/TemplatePlatformer.h"

然后在每个.cpp中,您首先要包括:

#include "global.h"

与基于宏的解决方案相比,它更清晰,而且不是更多的打字。