簡體   English   中英

typedef int function(void *)的含義是什么?

[英]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.

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