我遇到了这种for循环布局:
#include <iostream>
int main()
{
{
for (int i = 0; i != 10; ++i)
{
std::cout << "delete i->second;" << std::endl;
}
}
{
for (size_t i = 0; i < 20; ++i)
{
std::cout << "delete m_indices[i];" << std::endl;
}
}
return 0;
}
我想知道这括号的额外用途是什么?这在我们的代码库中出现了几次。
最佳答案
曾几何时,许多月前,VS6存在并广受欢迎。但是,它未能符合许多C++标准。在标准正式发布之前(同年)发布时,这是合理的;据我所知,它确实遵守了标准草案。
在草案和正式标准之间更改的标准之一是在第一部分中创建的for循环变量的生存期。导致以下代码无法编译
{
for (int i=0; i<1; ++i){}
for (int i=0; i<2; ++i){}
}
因为
i
由第二个for循环重新定义。其他编译器也遇到了此错误;我重点介绍VS6,因为它是标准发布后许多年以来Visual Studio的唯一版本,但从未针对此特定问题发布更新。意味着它产生了更大的影响。
一种解决方案是将整个for循环强制进入其自己的作用域,如您所示。
关于c++ - For循环在自己的花括号内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60719037/