使用C ++内联UnrealEngine UE_LOG宏

时间:2016-12-31 10:20:11

标签: c++ macros inline unreal-engine4

我是虚幻引擎的新手,我正在尝试声明inline函数如下:

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

为了避免每次都UE_LOGLogTemp拨打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),如果有一个简单的解释是什么原因导致乱码输出,它也会非常有用

1 个答案:

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