如何分配函数指针?

时间:2013-12-18 09:09:18

标签: c function pointers function-pointers

我有一个函数int handle_request(server* server, int conn_fd);,它接受​​2个参数。 如何将其分配给此函数指针? void (*func)(void* input, void* output)

我一直在努力做像

这样的事情

void (*func)(void* input, void* output) = handle_request;

and tried these但我总是得到

  

警告:从不兼容的指针类型初始化[默认启用]

2 个答案:

答案 0 :(得分:1)

正如你的问题中提到的,如果函数原型返回int,那么指针必须匹配它。如果retuzrn类型应该为void,那么指针也是无效的。

void handle_request(void* input, void* output)
{
}

int main(int argc, _TCHAR* argv[])
{
    void (*func)(void* input, void* output) = handle_request;
    return 0;
}

int handle_request(void* input, void* output)
{
    return 0;
}

int main(int argc, _TCHAR* argv[])
{
    int (*func)(void* input, void* output) = handle_request;
    return 0;
}

答案 1 :(得分:0)

您的函数指针应与您的函数签名匹配。 这意味着您可以分配函数指针:

void (*func)(void* input, void* output)

到函数:

void handle_request(void *input, void *output)

如果你按照自己的方式尝试,就会发出警告。