2016-09-14 3 views
-1

일부 외부 .dll 라이브러리와 함께 Unreal Engine 4를 사용하고 있습니다. 나는 이런 식으로 ... "3.141592" "PI가"로 언리얼 엔진의 핵심 코드에 정의 된 문제가 발생했습니다 :#define은 .dll 헤더 파일의 변수와 충돌합니다.

#define PI     (3.1415926535897932f) 

그러나, 내가 사용하고있는 .DLL 라이브러리와 함께 제공되는 헤더 파일에 "

protected: 
    SomeDataType PI; 

나는 그것이 언리얼 엔진의 핵심 파일에 사용되기 때문에 정의 편집 어차피 : PI는 "클래스의 protected 멤버 변수의 이름입니다. 헤더 파일을 편집 할 수 없으며 기본 .dll과 더 이상 일치하지 않을 것입니다.

좋은 해결책이 있습니까? "PI"를 로컬에서 정의 할 수 있습니까?

+4

'#undef PI'가 로컬로 도움이 될 수 있습니다. –

답변

1

이것은 매크로의 문제점이며, 현대 C++ 프로그래머가 가능한 한 많이 피하려고하는 이유입니다.

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

그리고 코드 만 할 #include "my_unreal.h"의 나머지 부분에서, 그리고 실제 비현실적인 헤더 : 당신의 코드를 직접 언리얼 헤더 파일을 포함하지만, 뭔가를하지하는

하나 개의 솔루션입니다 . 그래서 다른 코드가 생길 때에는 매크로가 사라집니다.