2016-09-14 85 views
-1

我使用虛幻引擎4與一些外部.dll庫。我也遇到過,其中「PI」虛幻引擎的核心代碼被定義爲一個問題「3.141592 ......」像這樣:#define與.dll頭文件中的變量衝突

#define PI     (3.1415926535897932f) 

然而,在我使用該.dll庫提供的頭文件「 PI」是一類的受保護成員變量的名稱:

protected: 
    SomeDataType PI; 

我不能編輯的定義,因爲它是在虛幻引擎的核心文件中使用。我相信我不能編輯頭文件以及它不再匹配底層的.dll。

有沒有很好的解決方案?我可以在本地取消定義「PI」嗎?

+4

本地'#undef PI'可能有所幫助。 –

回答

1

這是宏的問題,也是現代C++程序員試圖儘可能避免它們的原因。

一種解決方案是爲您的代碼不包括直接虛幻頭文件,但彌補這樣的:

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

然後在你的代碼只能做#include "my_unreal.h"的休息,而不是實際的虛幻頭。以便在任何其他代碼發生時宏都消失了。