【问题标题】:#define conflict with variable in .dll header file#define 与 .dll 头文件中的变量冲突
【发布时间】:2016-09-14 05:22:55
【问题描述】:

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

#define PI                  (3.1415926535897932f)

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

protected:
  SomeDataType PI; 

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

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

【问题讨论】:

  • #undef PI 本地可能会有所帮助。

标签: c++ dll unreal-engine4 member-variables


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多