2016-12-31 24 views
0

的虛幻引擎UE_LOG宏我是新來的虛幻引擎,和我想聲明inline功能如下:內嵌在C++

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

爲了避免與LogTempWarning調用UE_LOG每次。

當要求例如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

你不能給const char*UE_LOG,它需要const TCHAR*,也不能是reinterpret_cast ED這種方式,它需要一個轉換,但只是讓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); 
}