Visual Studio 可能是错误的编译器错误

海蒂·西弗特

我最近不得不重新映像我的笔记本电脑,并重新安装了 Visual Studio(尝试了 2018 年但它让我很恼火,所以我回滚到 2015 年似乎工作得更好)我打开了一个旧项目,起初它说失败了找到构建工具集,所以我将它重新定位到我刚刚安装的那个。并再次尝试编译,但在以下函数中告诉我失败:

string getinvnum(vstring range) {
int inv;
string ret;
for (int i = 0; i < range.size(); i++) {
    int temp = stoi(range[i]);
    if (temp > inv) {
        inv = temp;
    }
}
return to_string(inv);}

cpp(266): error C4700: uninitialized local variable 'inv' used.与公然拒绝编译。

第 266 行与那里的 if 语句有关。这根本不是一个复杂的函数,它肯定是初始化的,事实上,如果我将鼠标悬停在“inv”智能感知上,它会减速。

然后我决定将我的源代码复制并粘贴到一个新项目中,因为这个错误对我来说毫无意义,注释掉与其他包含的项目文件相关的代码,并尝试重新编译,并且它没有任何抱怨地工作。

这段代码有什么问题,或者工具集的变化有问题吗?虽然一切正常,但我只想了解,如果可能的话,发生了什么/我做了什么导致了这个错误。

谁能向我解释为什么visual studio要对我这样做?

编辑:刚刚将整个解决方案复制到一个新项目中,现在整个项目都没有任何问题。然而,原来的代码虽然相同,但仍然告诉我同样的错误。

艾伦·伯特尔斯

inv未初始化。根据项目编译器设置、编译器版本以及您是使用调试还是发布编译器可能会或可能不会检测到这一点。

要解决此问题,只需初始化inv为具有初始值。由于inv具有一些随机值(有时可能会起作用,因为该随机值可能为 0),编译器试图保护您免受难以发现的错误

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章