赞
踩
//函数指针的定义 typedef ULONG (*PPP_ABC_MSG_PROC_PF) (bitMask, VOID *, VOID *); //定义一个宏,处理全局变量函数指针g_All_pfABCMSGProc的赋值 #define M_PPP_ABC_MSG_FUNC_DEFINE(tbl_id, get_config, set_config, create, del) \ [tbl_id] = { \ [ABC_OP_GET] = get_config, \ [ABC_OP_SET] = set_config, \ [ABC_OP_ADD] = create, \ [ABC_OP_DEL] = del \ } //全局变量保存函数指针 STATIC PPP_ABC_MSG_PROC_PF g_All_pfABCMSGProc[MaxMsgType][MaxopAction] = { M_PPP_ABC_MSG_FUNC_DEFINE(TABLE_ID_1, Fun_Get1, Fun_Set1, Fun_Add1, Fun_Del1, ), M_PPP_ABC_MSG_FUNC_DEFINE(TABLE_ID_2, Fun_Get2, Fun_Set2, Fun_Add2, Fun_Del2, ), } //回调函数的公共入口函数 STATIC ULONG MduleMainCallBackFun(void * pCfgMsg, void* pRepMsg) { ULONG errCode = ERROR_SUCCESS; PPP_ABC_MSG_PROC_PF pfPABCMSGProc = NULL; xxxx xxxx MsgType = GetMsgType(); opAction = Get(opAction); //根据MsgType 、opAction 找到对应的函数指针 pfPABCMSGProc = g_All_pfABCMSGProc[MsgType][opAction]; if (NULL != pfPABCMSGProc ) { //进行回调 errCode = (*pfPABCMSGProc)(xxx, xxx, xxx); } xxxx return errCore; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。