請幫我理解這個typedef在做什麼?typedef函數返回值C
typedef void (xyz) (void *data);
extern struct x* FUNCTION(xyz *ptr);
這是我的理解:在第1行xyz是一個函數返回void並將void指針作爲參數。但我不能用這種理解來解釋第二行。
任何輸入是可觀的。
請幫我理解這個typedef在做什麼?typedef函數返回值C
typedef void (xyz) (void *data);
extern struct x* FUNCTION(xyz *ptr);
這是我的理解:在第1行xyz是一個函數返回void並將void指針作爲參數。但我不能用這種理解來解釋第二行。
任何輸入是可觀的。
有一個稱爲FUNCTION
的外部函數,它將一個指針指向一個xyz
函數作爲參數,並返回一個指向struct x
的指針。
第一行將xyz
定義爲返回void
並帶有void*
類型的一個參數的函數的類型。您實際上可以省略名稱data
,因爲它什麼都不做。
由於在C中沒有原函數類型,你可以直接聲明,則只能使用指針到xyz
,因爲你確實有xyz * ptr
。
更常見的是,包括在所述的typedef指針:
typedef void (*fptr)(void*);
void call(fptr f, void * arg) { f(arg); }
void some_function(void * data); // whatever
int main()
{
void * p = malloc(8);
call(some_function, p);
}
第二行聲明瞭一個函數,它接受一個xyz*
作爲參數並返回一個指向struct x
,與外部連接。
這並不回答這個問題,因爲它是關於代碼的第二行。 – Archie 2012-01-04 19:57:18
@Archie:好的,我添加了第二行的解釋。 – 2012-01-04 20:31:54