2014-02-20 89 views
1

這是一個語法問題。我碰到線:'void(* old_sigint_handler)(int)'是什麼?

void (*old_sigint_handler)(int); 

而我不知道它在做什麼。這看起來像是沒有變量名稱的三種類型的連接。我希望澄清!

+0

函數指針,以接受一個'int'並返回'功能void' – user2485710

+0

它的指針,需要一個'int'說法,也沒有明確的返回功能。 [CDECL(http://cdecl.org/)是一個很好的資源,以澄清這種聲明 – simonc

+0

的是在main方法的中間雖然。 – user2316667

回答

3
void (*old_sigint_handler)(int); 

這定義old_sigint_handler是一個指針,指向這需要一個int並返回void,即,沒有值的函數。各地old_sigint_handler的括號是必需的還有這裏的以下內容:

void *old_sigint_handler(int); 

聲明的函數old_sigint_handler這需要一個int並返回一個指針void類型。這是因爲C中的優先規則。括號裹緊indentifier old_sigint_handler*使其成爲一個函數而不是指針的功能。閱讀這個來精神分析複雜的C聲明 - Clockwise/Spiral Rule

+0

你是低調者,我希望你能教我做錯了什麼,而不僅僅是低調。沒有意義。 – ajay

1

是一個函數指針,一個函數簽名void (int)

1

那是名爲old_sigint_handler變量聲明一個變量,可容納一個函數指針,以接受一個int並沒有返回值(空)的功能。

1

它的命名函數指針的聲明old_sigint_handler採用單個int和沒有返回。

1

這是一個函數指針聲明old_sigint_handler函數,該函數需要一個int並返回void

3

利用cdecl知道它是什麼樣的聲明完全一樣。它是C -> English

declare old_sigint_handler as pointer to function (int) returning void

+0

還,鏈接是有用 –

+0

呀,偉大的鏈接。 – user2316667

相關問題