UE--VS2022编译UE项目出现 error C4668: 没有将“__has_feature”定义为预处理器宏,用“0”替换“#if/#elif”

1>H:\UE\UE_5.0\Engine\Source\Runtime\Core\Public\Experimental\ConcurrentLinearAllocator.h(26): error C4668: 没有将“__has_feature”定义为预处理器宏,用“0”替换“#if/#elif”
1>H:\UE\UE_5.0\Engine\Source\Runtime\Core\Public\Experimental\ConcurrentLinearAllocator.h(26): error C4067: 预处理器指令后有意外标记 - 应输入换行符

还好 我翻遍百度找到了大佬的 博客
踩坑-Error C4668 : 没有将“__has_feature”定义为预处理器宏,用“0”替换“#if/#elif” – 同步Schの秘境

我不清楚可否转载   但是我在此依然作为备忘笔记发布  给佬整点人流量 同时也让同样的问题  不在困惑大家

进行勾选这个就是可以了

当你在使用UE5(Unreal Engine 5)编译项目时遇到C4668错误,这通常是因为你尝试检查某个特定的编译特性(`__has_feature`),但是该特性在当前的编译配置下并未被支持。`__has_feature`是一种编译期常量检查,它允许你在编译时检查特定的语言特性是否可用。 解决这个问题的方法是: 1. **确认编译设置**:首先确保你的构建配置支持你试图使用的特性。查看UE5文档中关于所需编译标志(如 `-D_HAS_FEATURE=1` 或 `-D_HAS_FEATURE=0`)的说明,确保它们已被添加到你的项目配置中。 2. **移除编译条件**:如果特性检测不是必需的,你可以直接去掉那些依赖于`__has_feature`的`#if`、`#elif`块。不过,这样做可能会导致代码在某些平台上运行不一致。 3. **条件编译替换**:如果确实需要针对不同平台做不同处理,你可以使用`#ifdef`或`#ifndef`来代替`#if __has_feature`,然后明确设置不同的值来代表特征是否存在。例如: ```cpp #ifdef _HAS_FEATURE_ // 特性存在,使用相关代码 #else // 特性不存在,使用备用代码 #endif ``` 然后分别对支持和不支持该特性的环境设置正确的定义。 4. **更新SDK或工具链**:有时候,可能是由于使用的引擎版本或第三方库的问题。检查是否有更新的SDK或更新编译工具链来修复此问题。 记得在修改后,再次编译并测试你的项目,以确保更改不会引入新的错误。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值