请帮我理解这个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