踩坑-Error C4668 : 没有将“__has_feature”定义为预处理器宏,用“0”替换“#if/#elif”

内容目录

在编译 UE 的时候,发生了如下错误。

Detected compiler newer than Visual Studio 2022, please update min version checking in WindowsPlatformCompilerSetup.h
10>ConcurrentLinearAllocator.h(31): Error C4668 : 没有将“__has_feature”定义为预处理器宏,用“0”替换“#if/#elif”
10>ConcurrentLinearAllocator.h(31): Error C4067 : 预处理器指令后有意外标记 - 应输入换行符

原因是因为编译的过程中没有找到 __has_feature 宏,而这个是 MSVC 中的宏。
发现,14.36.3253214.38 均在 \VC\Tools\MSVC\14.42.34433\include\sanitizer\common_interface_defs.h 第 20 行有这个宏。
但是我的 14.42.34433 却没有这个宏:


file

file

回退到旧版本之后,这个问题解决了。

滚动至顶部