這行程式碼是執行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://www.ptt.cc/bbs/C_and_CPP/M.1533297235.A.7AF.html
※ 編輯: zzss2003 (220.130.11.240), 08/03/2018 19:59:42