2012-01-04 97 views
1

请帮我理解这个typedef在做什么?typedef函数返回值C

typedef void (xyz) (void *data); 
extern struct x* FUNCTION(xyz *ptr); 

这是我的理解:在第1行xyz是一个函数返回void并将void指针作为参数。但我不能用这种理解来解释第二行。

任何输入是可观的。

回答

2

有一个称为FUNCTION的外部函数,它将一个指针指向一个xyz函数作为参数,并返回一个指向struct x的指针。

0

第一行将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,与外部连接。

+0

这并不回答这个问题,因为它是关于代码的第二行。 – Archie 2012-01-04 19:57:18

+0

@Archie:好的,我添加了第二行的解释。 – 2012-01-04 20:31:54