避免在Visual C ++中声明已声明的变量

时间:2014-11-26 07:46:32

标签: c++ visual-c++ compiler-warnings

对不起,如果标题不是很清楚,我不知道怎么说......我经常因为像这样的愚蠢错误而失去了很多时间调试:

for(int i=0;i<10;i++)
{
    ...
    for(int i=0;i<50;i++)
    {
         somearray[i]=x;
    }
    ...
}

因为我喜欢小变量名,所以我甚至不知道为什么在c ++中这样做是不可能的呢? 有没有办法让visual c ++提醒这个多重声明?

由于

4 个答案:

答案 0 :(得分:1)

您可以使用Analyzer Warning C6246在VS中进行测试。

您还可以使用-Wshadow使用GCC或Clang进行测试。

另请参阅:Is there an equivalent of gcc's -Wshadow in visual C++

答案 1 :(得分:0)

这是可能的,因为内部作用域中的名称可以隐藏外部作用域中的名称。这里,两个范围是for循环,但原则一般适用。

标准C ++中有很多这方面的例子。例如,有std::begin但也有std::string.begin。你无法对此发出警告。

答案 2 :(得分:0)

据我所知,由于给定的代码组件在c ++

中有效,因此无法完成

答案 3 :(得分:0)

在某种意义上,这是正确的代码,外部和内部i是两个不同的变量。但是,在内部循环内部,您不能引用外部i(可能需要也可能不需要)。

如果您的编译器没有给出警告,您应该提高警告级别