-1

我正在使用带有一些外部 .dll 库的虚幻引擎 4。我遇到了一个问题,其中“PI”在虚幻引擎核心代码中定义为“3.141592 ...”,如下所示:

#define PI                  (3.1415926535897932f)

但是,在我使用的 .dll 库提供的头文件中,“PI”是类的受保护成员变量的名称:

protected:
  SomeDataType PI; 

我无法编辑定义,因为它在虚幻引擎的核心文件中使用。我相信我无法编辑头文件,因为它不再匹配底层的 .dll。

有没有好的解决方案?我可以在本地取消定义“PI”吗?

4

1 回答 1

1

这是宏的问题,也是现代 C++ 程序员尽量避免使用宏的原因。

一种解决方案是让您的代码不直接包含 Unreal 头文件,而是组成如下内容:

// my_unreal.h
#include "unreal.h"
#undef PI

然后在其余代码中只做#include "my_unreal.h",而不是实际的虚幻标题。这样当任何其他代码发生时,宏就消失了。

于 2016-09-14T05:51:46.587 回答