[问题] 已解决

楼主: zzss2003 (brotherD)   2018-08-03 19:53:53
这行程式码是执行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);
所以要做转型

Links booklink

Contact Us: admin [ a t ] ucptt.com