我在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标准仅将变量声明限制在块的开头.根据该限制,您的选择是在函数的开头或其他(阻塞的)控制结构中声明所有变量,或者仅为此目的引入新的裸块来声明其他变量.