這行程式碼是執行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);
所以要做轉型