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