2016-09-14 4 views
-1

Ich benutze Unreal Engine 4 mit einigen externen. DLL-Bibliotheken. Ich habe ein Problem festgestellt, wo „PI“ in Unreal Engine Kern-Code definiert wird als „3.141592 ...“ wie folgt aus:# define Konflikt mit Variable in. DLL-Header-Datei

#define PI     (3.1415926535897932f) 

jedoch in der Header-Datei mit der DLL-Bibliothek geliefert Ich verwende " PI“ist der Name eines geschützten Membervariable einer Klasse:

protected: 
    SomeDataType PI; 

ich kann nicht bearbeiten die definieren, weil es in den Kerndateien der Unreal Engine verwendet wird. Ich glaube, ich kann die Header-Datei nicht so gut bearbeiten, als würde sie nicht mehr mit der zugrunde liegenden .dll übereinstimmen.

Gibt es dafür eine gute Lösung? Kann ich "PI" lokal oder etwas unbestimmt machen?

+4

'#undef PI' kann lokal helfen. –

Antwort

1

Dies ist ein Problem mit Makros und ist der Grund, warum moderne C++ - Programmierer versuchen, sie so weit wie möglich zu vermeiden.

Eine Lösung ist für Ihren Code nicht die Unreal-Header-Datei direkt enthalten, aber wie etwas machen:

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

Und dann in dem Rest des Codes nur tun #include "my_unreal.h", und nicht der tatsächliche unwirklich Kopf . Damit ist das Makro zu dem Zeitpunkt verschwunden, an dem ein anderer Code passiert.