[英]C Block inside a 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
}
}
它只是:一個塊。 它引入了一個新的有限范圍:內部聲明的變量在外部不可用,因此可以用來限制一組變量的范圍。
但通常它只是用來組織代碼以便於閱讀,也許是為了建議或提醒一些額外的細節(或者只是強迫你的編輯器進行額外的縮進),例如:
lockDatabase();
{
// this code is all within the database lock:
}
unlockDatabase();
此外,較舊的C標准僅將變量聲明限制在塊的開頭 。 根據該限制,您的選擇是在函數的開頭或其他(阻塞的)控制結構中聲明所有變量,或者僅為此目的引入新的裸塊來聲明其他變量。
C塊的用法是將邏輯與其余代碼分開。 以下是一些有用的場景:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.