作者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/m.aspx?n=bbs/C_and_CPP/M.1533297235.A.7AF.html
※ 編輯: zzss2003 (220.130.11.240), 08/03/2018 19:59:42