【问题标题】:How do I assign function pointers?如何分配函数指针?
【发布时间】:2013-12-18 09:09:17
【问题描述】:

我有一个函数 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 但我总是得到 ​​p>

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

【问题讨论】:

  • handle_request的原型是什么样的?
  • handle_request 的签名需要与您的函数指针定义相匹配 - 也许您也应该发布 this 的定义?
  • handle_request 函数返回一个integer,而您声明的函数指针返回一个void

标签: c function pointers function-pointers


【解决方案1】:

正如你的问题中提到的,如果函数原型返回 int,那么指针必须匹配它。如果 retuzrn 类型应该是 void,那么指针也应该是 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;
}

【讨论】:

    【解决方案2】:

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

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

    到函数:

    void handle_request(void *input, void *output)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 2016-12-03
      • 2011-10-16
      • 2021-12-29
      • 2019-06-12
      相关资源
      最近更新 更多