簡體   English   中英

C塊內部有什么功能?

[英]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塊的用法是將邏輯與其余代碼分開。 以下是一些有用的場景:

  1. 一個不應被多次調用的函數。 最好在塊中編寫這段代碼。
  2. 在C語言中,變量只能在函數的開頭聲明。 因此,任何需要更多變量並且不希望與函數的其余代碼具有單獨功能的代碼片段都可以放在代碼塊中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM