我有一个函数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但我总是得到
警告:从不兼容的指针类型初始化[默认启用]
答案 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)
如果你按照自己的方式尝试,就会发出警告。