gpt4 book ai didi

c++ - 未声明的变量在 Visual C++ 中未标记为错误

转载 作者:行者123 更新时间:2023-11-28 01:41:01 25 4
gpt4 key购买 nike

<分区>

我有一些旧的 C++ 代码,我正试图将它们带到更现代的时代。在这个阶段,我试图让用 Visual C++ 6.0 编译的代码现在用 VS 2003 (Microsoft Visual C++ .NET 69462-335-0000007-18915) 编译。如果我们能让它干净地编译并正确运行,那么我们可以采取另一个步骤将它放入更新版本的 VS 中。

但是我发现了一个未声明的变量没有被 C++ 编译器标记的情况!代码是这样的:

for (MLink *ML = m_Links.begin(); ML != m_Links.end(); ++ML)
{
// some code here
}

for (std::map<CString,int>::iterator it = Rows.begin();
it != Rows.end(); ++it)
{
MLink *ML = std::find (m_Links.begin(), m_Links.end(), Type);
// more code here
}

ML = m_Links.begin();

在第一个 for 循环中,ML 被定义为循环语句中的指针。我理解这意味着 ML 在循环外是未定义的。

在第二个 for 循环中,ML 被定义为循环代码块内的指针。同样,我理解这意味着 ML 在循环外是未定义的。

但是最后一行引用了 ML 而没有声明它的类型,编译器没有给出错误(甚至没有警告)。怎么会这样???

注意:m_Links 变量是一个 vector ,标准库中的 begin() 方法更改为返回一个迭代器,而不是一个指针。因此,该问题在所有三个事件中都被正确标记为错误。

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