虽然下面的例子编译得很好,除了错误的最后一行,我想知道范围内这个'范围'的来龙去脉?也是这个术语,如果有的话.
考虑这些括号:
void func()
{
    int i = 0;
    { // nice comment to describe this scope
        while( i < 10 )
            ++i;
    }
    { // nice comment to describe this scope
        int j= 0;
        while( j< 10 )
            ++j;
    }
    i = 0; // OK
    // j = 0; // error C2065
}
考虑一下:
error C2065: 'j' : undeclared identifier
编辑: 接受的答案来自位掩码,虽然我认为每个人都应该把它放在anio的答案中.特别是,引用:"也许你应该将你的功能分解为2个功能"
做.无论如何!
将数据尽可能保持在本地并尽可能保持const有两个主要优点:
此外,这对于文档来总结函数的特定部分所做的工作非常有用.
我听说这被称为显式或虚拟范围.
我个人认为在函数中添加额外的作用域并没有多大价值.如果您依靠它来分离函数的各个部分,也许您应该将函数分解为2个函数.较小的功能比较大的功能更好.你应该努力拥有易于理解的小功能.
函数中范围的合法使用是限制锁定的持续时间:
int doX() 
{
 // Do some work
  { 
  //Acquire lock
  } // Lock automatically released because of RAII
}
内部范围有效地限制了锁定的代码.我相信这是常见的做法.