我用 PVS Studio 分析器扫描了我的代码,我对为什么会出现这个错误以及如何解决这个问题感到困惑。
V550 一个奇怪的精确比较:* dest == value。使用具有定义精度的比较可能会更好:fabs(A - B) < Epsilon。
bool PipelineCache::SetShadowRegister(float* dest, uint32_t register_name) {
float value = register_file_->values[register_name].f32;
if (*dest == value) {
return false;
}
*dest = value;
return true;
}
我猜想像这样更改代码:
bool PipelineCache::SetShadowRegister(float* dest, float* epsilon uint32_t register_name) {
float value = register_file_->values[register_name].f32;
return fabs(dest - value) < epsilon;
}