typedef函数返回C中的值

时间:2012-01-04 19:50:04

标签: c typedef

请帮我理解这个typedef在做什么?

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

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

任何输入都很明显。

2 个答案:

答案 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的指针,并带有外部链接。