作者zzss2003 (brotherD)
看板C_and_CPP
标题[问题] 执行function pointer需要附上prototype?
时间Fri Aug 3 19:53:53 2018
这行程式码是执行function pointer:
((int(*)(INT8U, INT8U, CmdHndlrMap_T**,
int))g_PDKCmdsHandle[PDKCMDS_GETLUN11MSGHNDLRMAP])(NET_FN(pReq->NetFnLUN),
pReq->Cmd, &pCmdHndlrMap,BMCInst);
g_PDKCmdsHandle是一个array of function pointer。
要被执行的function的prototype如下:
extern int PDK_GetLUN11MsgHndlrMap (INT8U NetFn, INT8U Cmd, _FAR_
CmdHndlrMap_T ** pCmdHndlrMap,int BMCInst);
我看书上,执行的时候应该只要带参数就好了,不用附上参数的prototpe
问题: 请问C standard在C89後有这样规定吗?
如果没有这样规定,大概就是compiler特别规定的
<edit>
不好意思,已经找到答案了。
因为function pointer的宣告为:
void (*pfunc)(void);
所以要做转型
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.130.11.240
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1533297235.A.7AF.html
※ 编辑: zzss2003 (220.130.11.240), 08/03/2018 19:59:42