請解釋這種類型的簽名:void (*signal(int signo, void *(func)(int)))(int)
解釋無效(*信號(INT SIGNO,無效*(FUNC)(INT)))(INT)
5
A
回答
17
的signal
函數的類型簽名是一個比較明確的當的typedef用於被傳來傳去的函數指針:
typedef void (*sighandler_t)(int);
sighandler_t signal(int signo, sighandler_t func);
sighandler_t
是一個指針,它接受一個int
參數,並且沒有返回的功能。函數signal
函數將第二個參數作爲函數指針。它也返回該類型的函數指針。
1
需要從內向外讀取C聲明。複雜函數聲明的棘手部分是找出哪個是最內層的聲明器(從哪裏開始)。它通常是第一個不是類型標識符的標識符。因此,在這種情況下:
void (*signal(int signo, void *(func)(int)))(int)
的聲明部分爲signal
。在括號內,後綴的優先級高於前綴,因此signal
是一個帶有兩個參數((int signo, void *(func)(int))
部分)的函數,它返回一個指針(前綴爲*
)給一個採用一個int arg(末尾爲(int)
)的函數,並返回void
相關問題
- 1. java.lang.NumberFormatException:無效INT:「」
- 2. java.lang.NumberFormatException:無效INT:「」
- 3. NumberFormatException:無效int
- 4. NumberFormatException無效int「」
- 5. 無效int「」SQLiteDatabase
- 6. java.lang.NumberFormatException:無效INT:「空」
- 7. java.lang.NumberFormatException:無效INT:「android.permission.ACCESS_COARSE_LOCATION」
- 8. NumberFormatException-無效的Int
- 9. java.lang.NumberFormatException:無效INT:「1」
- 10. 回調函數:void之間的差異(* FUNC)(int)和無效(FUNC)(INT)
- 11. int *無效轉換爲int錯誤
- 12. 從int到int的無效轉換*
- 13. INT *爲int無效的轉換
- 14. #[錯誤]從'int *'無效轉換爲'int'
- 15. 從int到int的轉換無效** C++
- 16. 從int *到int的轉換無效
- 17. 從int **到const int的轉換無效**
- 18. 從int轉換無效到int
- 19. 從 'const int的*' 到 'INT' 無效轉換
- 20. C++無效轉換int *到int
- 21. 無法找到符號 - 方法fillArc(INT,INT,INT,INT,INT,INT)
- 22. C++ sendto()給出「從int(*)(int,int,int)throw()'到'int'的無效轉換」錯誤
- 23. Java-有效地做.setBounds(int,int,int,int);
- 24. java.lang.NumberFormatException:無效int:「24 pm」
- 25. NumberFormatException異常:無效INT: 「」
- 26. C++無效轉換到int
- 27. 無效recever int類型
- 28. 無效字面對於int
- 29. PID:30172 java.lang.NumberFormatException:無效INT: 「64」
- 30. 無效的表達式'int'
這是什麼(int)的東西在最後? – 2010-02-16 04:49:09
爲什麼我的問題被投下來了? – 2010-02-16 04:50:23
語法錯誤:http://www.cdecl.org/什麼是實際聲明? – 2010-02-16 05:29:31