我在C函数的定义中发现了一个奇怪的块使用(在动态窗口管理器的源代码中)。
这是函数定义中的一个块。 Line 944 of this file有一个例子。 这是关于什么的?
void
grabbuttons(Client *c, Bool focused) {
updatenumlockmask();
{
unsigned int i, j;
unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask };
//some more code
}
}
答案 0 :(得分:12)
就是这样:一个街区。它引入了一个新的有限范围:内部声明的变量在外部不可用,因此它可以用来限制一组变量的范围。
但通常它只是用来组织代码以便于阅读,也许是为了建议或提醒一些额外的细节(或者只是强迫你的编辑器进行额外的缩进),例如:
lockDatabase();
{
// this code is all within the database lock:
}
unlockDatabase();
此外,较旧的C标准仅将变量声明限制为块的开始。根据该限制,您的选择是在函数开头或其他(阻塞的)控制结构中声明变量的全部,或者仅为此目的引入新的裸块来声明其他变量。
答案 1 :(得分:1)
C块的用法是将逻辑与其余代码分开。以下是一些有用的场景: