gpt4 book ai didi

c++ - 在自己的花括号内循环

转载 作者:IT老高 更新时间:2023-10-28 11:35:11 26 4
gpt4 key购买 nike

我遇到过这种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++ - 在自己的花括号内循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49447957/

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