我收到编辑错误,指出" '富'声明为函数返回函数"因为我的程序中有一行:
typedef void * (* foo)(void *)(int);
其中foo是一个函数指针,该函数指向一个带有(void *)类型和int的函数,并返回一个(void *)类型。据我了解,上面的声明不是返回一个函数,而是一个指针。在这种情况下使用typedef的问题是什么?这个函数指针与我曾经使用的其他函数之间的唯一区别是(void *)参数,所以我认为问题与此有关。我在linux机器上使用gcc。
感谢您的帮助!
答案 0 :(得分:4)
您的声明是错误的。错误消息是有意义的,因为foo
,正如您所写,它被声明为"指向函数接收void *
并返回接收int
的函数的类型别名并返回void *
。
如果该功能收到void *
和int
,您应该改为:
typedef void *(*foo)(void *, int);
这实质上转换为"让foo表示接收void *
和int
并返回void *
"