我正在使用虚幻引擎4和一些外部.dll库。我遇到了一个问题,其中“PI”在虚幻引擎核心代码中定义为“3.141592 ......”,如下所示:
#define PI (3.1415926535897932f)
但是,在我使用的.dll库提供的头文件中,“PI”是类的受保护成员变量的名称:
protected:
SomeDataType PI;
我无法编辑define,因为它在虚幻引擎的核心文件中使用。我相信我无法编辑头文件,也不会再与底层的.dll匹配。
这有一个很好的解决方案吗?我可以在本地取消定义“PI”吗?
答案 0 :(得分:1)
这是宏的一个问题,也是现代C ++程序员尽可能避免使用它们的原因。
一种解决方案是让您的代码不直接包含Unreal头文件,但要构成如下内容:
// my_unreal.h
#include "unreal.h"
#undef PI
然后在代码的其余部分只执行#include "my_unreal.h"
,而不是实际的虚幻标头。因此,任何其他代码发生时宏都会消失。