我是虚幻引擎的新手,我正在尝试声明inline
函数如下:
void inline Print(const char* s) {
UE_LOG(LogTemp, Warning, TEXT("%s"), s);
}
为了避免每次都UE_LOG
和LogTemp
拨打Warning
。
在调用示例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),如果有一个简单的解释是什么原因导致乱码输出,它也会非常有用
答案 0 :(得分:1)
你无法将const char*
提供给UE_LOG
,它需要const TCHAR*
,也不能reinterpret_cast
这样,它需要转换,但只是让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);
}