![](/img/trans.png)
[英]What's the meaning of this piece of code? void (*signal(int sig, void (*func)(int)))(int);
[英]What's the meaning of typedef int function(void*)?
我使用以下構造看到了一些BSD代碼:
typedef int driver_filter_t(void*);
這究竟是什么意思? 我不認為它是一個函數指針,否則它會像typedef int (*driver_filter_t)(void*)
,對吧?
typedef int driver_filter_t(void*);
這是函數類型的定義。 它使得driver_filter_t
成為類型的別名,可以將其描述為“函數返回int
,其類型指針的參數為void
”。
對於所有typedef
,它為現有類型創建別名,而不是新類型。
driver_filter_t
不是指針類型。 你不能聲明類型為driver_filter_t
東西(語法不允許使用typedef名稱聲明一個函數)。 您可以聲明一個函數指針對象,例如:
driver_filter_t *func_ptr;
因為您不能直接使用函數類型名稱而不添加*
來表示指針類型,所以為函數指針類型定義typedef
可能更常見,例如:
typedef int (*driver_filter_pointer)(void*);
但函數類型的typedef完全合法,我個人覺得它們更清晰。
typedef int driver_filter_t(void*);
是函數類型的typedef。 在C中,您可以將它用於函數指針,如driver_filter_t* fn_ptr
。
在C ++中,您還可以使用該typedef來聲明成員函數(但不是為了實現它們):
struct Some {
driver_filter_t foo; // int foo(void*);
driver_filter_t bar; // int bar(void*);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.