C++中没有关键字的语句块

Jos*_*mez 2 c++

可能重复:
C++中带括号的范围

我正在处理v8 javascript引擎,为我大学的新生开发一个学习环境,我加快了这个:

d8.cc:309

char* input = NULL;
{  // Release lock for blocking input.
  Unlocker unlock(isolate);
  input = fgets(buffer, kBufferSize, stdin);
}
Run Code Online (Sandbox Code Playgroud)
  1. 它叫什么名字?
  2. 如何在其他环境中使用它?
  3. 在c ++中只是公平的吗?

Oli*_*rth 6

就语言标准而言,整体结构(即未命名的块)被称为复合语句.它有助于引入新的范围.

在C++中,通常有两种用途:

  1. 将局部变量限制为特定的代码段; 目的是尽量减少范围"污染",并使代码的读者更容易.(在C和Java等其他语言中也可以实现相同的目标.)

  2. 严格控制对象/资源的生命周期,因为范围局部变量的析构函数将在范围的末尾自动调用.这可以用于几个聪明的事情,例如自动关闭文件句柄,释放互斥锁等.所以你可能听到人们谈论例如scoped互斥.(C和Java没有析构函数,所以这个概念不会翻译.)