对不起,如果标题不是很清楚,我不知道怎么说......我经常因为像这样的愚蠢错误而失去了很多时间调试:
for(int i=0;i<10;i++)
{
...
for(int i=0;i<50;i++)
{
somearray[i]=x;
}
...
}
因为我喜欢小变量名,所以我甚至不知道为什么在c ++中这样做是不可能的呢? 有没有办法让visual c ++提醒这个多重声明?
由于
答案 0 :(得分:1)
您可以使用Analyzer Warning C6246在VS中进行测试。
您还可以使用-Wshadow
使用GCC或Clang进行测试。
答案 1 :(得分:0)
这是可能的,因为内部作用域中的名称可以隐藏外部作用域中的名称。这里,两个范围是for
循环,但原则一般适用。
标准C ++中有很多这方面的例子。例如,有std::begin
但也有std::string.begin
。你无法对此发出警告。
答案 2 :(得分:0)
据我所知,由于给定的代码组件在c ++
中有效,因此无法完成答案 3 :(得分:0)
在某种意义上,这是正确的代码,外部和内部i是两个不同的变量。但是,在内部循环内部,您不能引用外部i(可能需要也可能不需要)。
如果您的编译器没有给出警告,您应该提高警告级别