2016-12-31 1 views
0

와 언리얼 엔진 UE_LOG 매크로를 인라인, 그리고 나는 inline 함수를 선언하기 위해 노력하고있어 :내가 언리얼 엔진에 새로 온 C++

LogTempWarningUE_LOG에 대한 호출을 방지하기 위해
void inline Print(const char* s) { 
    UE_LOG(LogTemp, Warning, TEXT("%s"), s); 
} 

때마다.

예를 들어 Print("Hello")을 호출하면 출력은 LogTemp:Warning: 效汬o입니다.

내 생각 엔 ASCII 인코딩과 관련된 것이지만 실제로는 잘 모르겠습니다.

또한 다음과 같은 reinterpret_cast를 사용하려고 :

void inline Print(const char* s) { 
UE_LOG(LogTemp, Warning, TEXT("%s"), reinterpret_cast<const TCHAR *>(s)); 
} 

그러나 동일한 결과로 끝났다.

올바른 방법을 알고 싶습니다. (인라인 함수보다 MACRO를 사용하고 싶지 않습니다.) 왜 횡설수설적인 이유가 무엇인지 간단한 설명이 있으면 매우 유용 할 것입니다. 유능한.

답변

1

당신은 UE_LOG-const char*을 줄 수 없다, 그것은 변환을 필요로 또한 reinterpret_cast 에드 그 방법이 될 수 없습니다 const TCHAR*이 필요하지만, 단지 FString 당신을 위해 더러운 일을 처리 할 수 ​​있습니다. 난 당신이 다음 중 하나를 선택할 수 있다고 생각 :

1.

inline void Print(const FString& s) 
{ 
    UE_LOG(LogTemp, Warning, TEXT("%s"), *s); 
} 

2.

inline void Print(const char* s) 
{ 
    FString str(s); 
    UE_LOG(LogTemp, Warning, TEXT("%s"), *str); 
} 
관련 문제