请帮我理解这个typedef在做什么?
typedef void (xyz) (void *data);
extern struct x* FUNCTION(xyz *ptr);
这是我的理解:在第一行中,xyz是一个返回void并将void指针作为参数的函数。但我不能用这种理解解释第二行。
任何输入都很明显。
答案 0 :(得分:2)
有一个名为FUNCTION
的外部函数,它将指向xyz
函数的指针作为参数,并返回指向struct x
的指针。
答案 1 :(得分: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
的指针,并带有外部链接。