gpt4 book ai didi

c++ - 使用了危险的魔数(Magic Number) N

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:40 34 4
gpt4 key购买 nike

PVS-Studio ,静态代码分析器,用于以下代码

size_t const n = 4;
int a[n] = {};

报告:

V112 Dangerous magic number 4 used: ...t const n = 4;. test.cpp 3

尽管 PVS-Studio 与 Visual Studio 2017 项目一起使用,并针对 32 位和 64 位报告相同的警告,但分析器 AFAIU 并未考虑这些构建配置。

我本来希望能更好地分析上下文并将上面的代码视为等同于此

int a[4] = {};

PVS-Studio 不会对其发出任何诊断。

在上面的例子中,这个使用了危险的魔数(Magic Number) N 是误报吗?

上面两个代码示例没有被分析为等效的原因是什么?

最佳答案

这个

size_t const n = 4;
int a[n] = {};

是误报。

64 位诊断非常嘈杂,您对此无能为力。是的,分析器会产生许多误报,例如 40xFFFFFFFF 等魔数(Magic Number)。在分析器中,当它不提示时,已经产生了很多异常(例如:int a[4] = {};)。然而,使用常量的选项仍然很多,不可能预见到所有这些选项。

当将代码移植到 64 位系统时,查看所有魔数(Magic Number)是有意义的,以确保程序员,例如,不期望某处的指针大小为 4 字节.然后关闭 V112 才有意义诊断,这样它就不会打扰你。

关于c++ - 使用了危险的魔数(Magic Number) N,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45195221/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com