【发布时间】:2012-02-02 17:16:08
【问题描述】:
请帮助我理解这个 typedef 是做什么的??
typedef void (xyz) (void *data);
extern struct x* FUNCTION(xyz *ptr);
这是我的理解:在第一行 xyz 是一个返回 void 并将 void 指针作为参数的函数。但我不能用这种理解来解释第二行。
任何输入都是可观的。
【问题讨论】:
请帮助我理解这个 typedef 是做什么的??
typedef void (xyz) (void *data);
extern struct x* FUNCTION(xyz *ptr);
这是我的理解:在第一行 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 的指针,并带有外部链接。
【讨论】: