看板 C_and_CPP 關於我們 聯絡資訊
這行程式碼是執行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