首页 文章

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

提问于
浏览
1

我收到一个编译错误,指出“'foo'声明为函数返回一个函数”,因为我的程序中有一行:

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

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

谢谢您的帮助!

1 回答

  • 4

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

    如果函数收到 void *int ,你应该改为:

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

    这实际上转换为“让foo表示函数接收 void *int 并返回 void * 的类型指针”

相关问题