【发布时间】:2017-09-04 17:50:28
【问题描述】:
TL:DR;在编译一个曾经是 C 为 C++ 的项目时,我收到此错误 error: initializing argument 2 of 'int SocketSrv(int, int (*)(), int*, int, int, int)'。该程序在没有警告的情况下编译为 C 代码(无论如何都在该行)。
代码是:
rtn=SocketSrv(RxServConfig->port_nbr1, fn, &RxDataSocketId,
RxServConfig->max_children,
RxServConfig->shmemkey,
RxServConfig->semkey);
问题是我们将一个指向函数int function (int) 的指针指向一个需要int function() 的函数。
我什至不知道为什么这在 C 中有效,而且我无法访问被调用函数中的代码。
问题:我可以以某种方式将 int (*)(int) 转换为 int (*)() 吗?又是“为什么这行得通?”指向的函数实际上使用了参数,即使我们声明了一个没有参数的函数指针,C 是否也会传递参数?
【问题讨论】: