C块内部有什么功能?

mus*_*tze 2 c scope function

我在C函数的定义中发现了一个奇怪的块使用(在动态窗口管理器的源代码中).

它是函数定义中的一个块.该文件的第944行有一个例子.这是关于什么的?

void
grabbuttons(Client *c, Bool focused) {
  updatenumlockmask();
  {
    unsigned int i, j;
    unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask };
    //some more code
  }
}
Run Code Online (Sandbox Code Playgroud)

pb2*_*b2q 12

它只是:一个块.它引入了一个新的有限范围:内部声明的变量在外部不可用,因此可以用来限制一组变量的范围.

但通常它只是用来组织代码以便于阅读,也许是为了建议或提醒一些额外的细节(或者只是强迫你的编辑器进行额外的缩进),例如:

lockDatabase();
{
    // this code is all within the database lock:


}
unlockDatabase();
Run Code Online (Sandbox Code Playgroud)

此外,较旧的C标准仅将变量声明限制在块的开头.根据该限制,您的选择是在函数的开头或其他(阻塞的)控制结构中声明所有变量,或者仅为此目的引入新的裸块来声明其他变量.