UE4源码编译错误 C4668 没有将“_NOEXCEPT_TYPES_SUPPORTED”定义为预处理器宏,用“0”替换“#if/#elif”

本文介绍了在使用UE4.27.2和VisualStudio2022时遇到的问题解决方案,包括卸载IncreddiBuild生成加速组件和在HoloLensTargetPlatform.Build.cs文件中关闭未定义标识警告。

版本:

1.UE4.27.2 

2.VS2022

解决方法一:
卸载VS里的单个组件的IncreddiBuild-生成加速就可以解决.

解决方法二:

找到HoloLensTargetPlatform.Build.cs文件,打开,在最后一行添加代码
bEnableUndefinedIdentifierWarnings = false,解决报错。

在 Visual Studio 2017 中,C++ 编译过程中出现 **错误 E0992**,通常与定义无效、解析失败或值未定义有关。当涉及 `_ITERATOR_DEBUG_LEVEL` 时,错误可能与该定义方式或 STL 的调试为相关。 ### 定义无效的常见原因与修复 1. **定义拼写错误或未定义** 在项目属性中,若 `_ITERATOR_DEBUG_LEVEL` 被错误拼写或未定义,可能导致解析失败。例如,该用于控制迭代器调试检查的级别,若未正确设置,可能影响 STL 的为并引发编译错误。 正确做法是确保该项目配置中正确定义。可在以下路径中检查和设置定义: ```plaintext C/C++ → 预处理器预处理器定义 ``` 若需禁用迭代器调试检查,可设置为: ```cpp _ITERATOR_DEBUG_LEVEL=0 ``` 2. **值格式不正确或为空** `_ITERATOR_DEBUG_LEVEL` 必须被定义为一个整数值(通常为 0、1 或 2),若其值为空或非整数,可能导致定义无效,从而引发 E0992 错误。 在项目属性中,确保其定义格式正确,如: ```cpp _ITERATOR_DEBUG_LEVEL=0 ``` 若定义为非整数值(如 `_ITERATOR_DEBUG_LEVEL=OFF`),将导致无效并报错 [^1]。 3. **定义冲突或重复定义** 若 `_ITERATOR_DEBUG_LEVEL` 在多个配置文件中被重复定义(如在 `.vcxproj` 文件中与项目属性冲突),也可能导致解析失败。此时应检查项目文件中是否包含冲突定义,并统一在项目属性中进设置。 4. **定义与 STL 为不兼容** `_ITERATOR_DEBUG_LEVEL` 控制 STL 的调试检查为。若设置为 2(启用所有检查),但在某些编译选项(如 `/RTCc`)下不兼容,可能触发编译警告或错误。 例如,若使用 `/RTCc` 选项并定义 `_ITERATOR_DEBUG_LEVEL=2`,则可能收到如下错误: ```plaintext #error: /RTCc rejects conformant code, so it is not supported by the C++ Standard Library. ``` 此时可选择移除 `/RTCc` 编译选项,或定义 `_ALLOW_RTCc_IN_STL` 以允许该为 [^3]。 --- ### 示例:在项目属性中设置 `_ITERATOR_DEBUG_LEVEL` 在项目属性中添加定义: ```plaintext C/C++ → 预处理器预处理器定义 → 编辑 ``` 添加以下定义: ```cpp _ITERATOR_DEBUG_LEVEL=0 ``` 这将禁用 STL 的迭代器调试检查,减少运时开销并避免解析问题。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Luminous815

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值