2016-12-31 6 views
0

ich Unreal Engine bin neu, und ich versuche, eine inline Funktion zu erklären, wie folgend:Inlining die Unrealengine UE_LOG Makro mit C++

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

Um den Anruf zu UE_LOG mit LogTemp und Warning zu vermeiden jedes Mal.

Wenn beispielsweise Print("Hello") aufgerufen wird, ist der Ausgang LogTemp:Warning: 效汬o.

Meine Vermutung ist etwas im Zusammenhang mit der ASCII-Codierung, aber ich bin mir wirklich nicht sicher.

Ich habe auch versucht reinterpret_cast wie folgt zu verwenden:

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

Aber endete mit dem gleichen Ergebnis.

Ich würde gerne den richtigen Weg (ich wollte nicht MACRO über Inline-Funktion verwenden) wissen, und wenn es eine einfache Erklärung, was der Grund für die Kauderwelsch-Ausgabe ist, wird es auch sehr sein sinnvoll.

Antwort

1

Sie nicht const char*-UE_LOG geben kann, bedarf es const TCHAR*, auch kann es nicht reinterpret_cast ed auf diese Weise sein, eine Konvertierung braucht, aber lassen Sie FString für Sie die schmutzige Arbeit übernimmt. Ich denke, Sie eine der folgenden Optionen wählen:

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); 
}