函数指针返回错误(void *)

时间:2014-11-01 21:07:35

标签: c function-pointers

我收到编辑错误,指出" '富'声明为函数返回函数"因为我的程序中有一行:

typedef void * (* foo)(void *)(int);

其中foo是一个函数指针,该函数指向一个带有(void *)类型和int的函数,并返回一个(void *)类型。据我了解,上面的声明不是返回一个函数,而是一个指针。在这种情况下使用typedef的问题是什么?这个函数指针与我曾经使用的其他函数之间的唯一区别是(void *)参数,所以我认为问题与此有关。我在linux机器上使用gcc。

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

您的声明是错误的。错误消息是有意义的,因为foo,正如您所写,它被声明为"指向函数接收void *并返回接收int的函数的类型别名并返回void *

如果该功能收到void *int,您应该改为:

typedef void *(*foo)(void *, int);

这实质上转换为"让foo表示接收void *int并返回void *"

的函数的类型指针