2014-11-01 115 views
1

我收到指出“‘富’声明函数返回一个函数”,因为在我的程序行的编译错误:误差函数指针返回(无效*)

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

其中foo是一个指向函数的函数指针,该函数需要(void *)类型和和int并返回(void *)类型。据我所知,上面的声明不是返回一个函数,而是一个指针。在这种情况下使用typedef是否有问题?这个函数指针与我一直使用的其他函数指针之间的唯一区别是(void *)参数,所以我假设问题与此有关。我在linux机器上使用gcc。

感谢您的帮助!

回答

4

您的声明是错误的。该错误消息是有道理的,因为foo,因为你写的,被宣布为“函数指针接收void *并返回接收int并返回void *的函数类型别名。

如果函数接收void *和一个int,你应该有这个代替:

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

这基本上转化为“让富表示类型函数指针接收void *int并返回一个void *

+0

完美,谢谢!我不知道为什么我认为每个参数都必须用()来封装,而不是用“,”分隔。 – 2014-11-01 21:21:52