2011-02-11 64 views
6

我是Java開發人員,出於某種原因,我正在研究C。問題是我在閱讀函數定義時遇到了一些麻煩。你能給我一個這個例子的提示:閱讀C中的函數定義

void (*signal(int sig, void(*func)(int)))(int) 

謝謝你們!

回答

4

您應該瞭解right-to-left rule。這個頁面包含很好的例子。

signal被一個函數取作爲參數:

  • 的整數
  • 函數指針服用int和返回沒什麼

並返回一個指向funcction服用int和返回什麼。

+1

在網上查找'cdecl'。 BTW信號是更復雜的例子之一。 :-) – 2011-02-11 13:07:18

+0

非常感謝很多人!實際上並不認爲一個函數可以以這種方式返回一個函數。 Thanksss! – 2011-02-11 13:34:19

2

func是一個函數指針,它接受一個int並返回void。

信號是一個函數,它接受一個int和一個像func這樣的指針,並返回一個類似於func的指針。

那就是:你指定哪個信號處理器(FUNC)關聯到信號(SIG ),以及該函數返回一個信號處理器(前一),你可以在一些地方保存。

2

「cdecl」的實例。我認爲它可用於Linux或源碼可以下載&內置。

cdecl> explain char *(*fptab[])() 
declare fptab as array of pointer to function returning pointer to char 
cdecl>