自己编译unreal angelscript 5.4
报错常量中的是enderGraphPrivate.cpp(189): error C4756: 常量算法中溢出
1> while compiling GetClobberValue
解决办法:
-
定位文件:
找到你引擎目录下的:Engine/Source/Runtime/RenderCore/Private/RenderGraphPrivate.cpp -
查找函数:
搜索GetClobberValue函数。它应该长这样:static float GetClobberValue() { // 原始代码可能直接返回一个巨大的数值 return ...; } -
应用修复:
为了规避编译器的常量溢出检查,你可以使用位转换(Bit Cast)的方法,或者通过预处理器指令临时禁用警告。推荐方法 A:使用位模式(更为稳健)
将该函数修改为使用整数位模式来构造浮点数,这样编译器就不会在预编译阶段进行常数量化计算。static float GetClobberValue() { // 使用 0xFFFFFFFF 产生的 NaN 或极值,通过取值绕过常量溢出检查 const uint32 Pattern = 0xFFFFFFFF; float Output; FMemory::Memcpy(&Output, &Pattern, sizeof(uint32)); return Output; }
