回 帖 发 新 帖 刷新版面

主题:请教一个函数指针的问题

正在看一段程序

struct KM_SETUP_TAB
{
    INT8U *lcdMessage;
    struct KM_SETUP_TAB *nextMenuPtr;
    INT32S (*SetupItemFunc) (S_PHONE_DATA_BASE *devptr,INT8S msg);
    INT32U  wAuthority;
} ;
typedef struct KM_SETUP_TAB S_KM_SETUP_TAB;

static S_KM_SETUP_TAB KM_AddressBook_EN[]=
{
    {"1.Search",        NULL,            swKM_aBookSearch,    KSETUP_AUTH_NONE    },    
    {"2.Add entry",        NULL,            swKM_aBookAdd,        KSETUP_AUTH_NONE    },
    {"3.Speed dial",    NULL,            swKM_aBookSpeedDial,    KSETUP_AUTH_NONE    },
    {"4.Erase all",        NULL,            swKM_aBookEraseAll,    KSETUP_AUTH_NONE    },
    {NULL,                 NULL,            NULL,            0            },
    {"Name:",             NULL,            NULL,            0            },
    {"Number:",            NULL,            NULL,            0            },
    {"SIP Phone:",        NULL,            NULL,            0            },
    {"Dial key",        NULL,            NULL,            0            },
    {"P-Book is empty", NULL,            NULL,            0            },
    {"Search:",            NULL,            NULL,            0            },    
    {"P-Book is full",  NULL,            NULL,            0            },     
    {"Press M1..Mx to", NULL,            NULL,            0            },       
    {"strore number",   NULL,            NULL,            0            },         
    {NULL,                 NULL,            NULL,            0            }
};

static INT32S swKM_aBookAdd(S_PHONE_DATA_BASE *devptr,INT8S msg)
{
    //S_DB_SIP_ADDR_PORT  *BookPtr; 
    
    if(devptr->FunState == FUN_STATE_SELECTION)
    {
        abkSorting(devptr);
        
        devptr->aBkName[0]=0;
        devptr->aBkPhoneNo[0]=0;
        devptr->aBkJob=0;
        devptr->Update=FALSE;
        if(devptr->aBkTotals==C_DB_SIP_PHONEBOOK_NUM)
        {
            CLR_LCD_SCREEN();
            PRINT_LCD_LINE_STRING(0,devptr->ItemList[PROMPT_7],C_NOT_UPDATE_LCD_BUF);
        }        
    }
    if(devptr->aBkTotals==C_DB_SIP_PHONEBOOK_NUM)
    {
        devptr->FunState = FUN_STATE_SELECTION;        // exit
    }
    else
    {        
        //devptr->aBkSelect=devptr->aBkTotals;
        devptr->temp=TRUE;    // add item
        abkEditEntry(devptr,msg);
    }    
}

请问为什么在调用swKM_aBookAdd 时可以不带参数,要是可以不带的话,那些参数从哪里来呢?
实在是郁闷!

回复列表 (共3个回复)

沙发

请举例说明哪里出现你说的“调用函数时可以不带参数”的情况。而且你贴的代码片段跟函数指针貌似没有关系吧

板凳


是我自己理解错了,这里只是定义,并没有调用,谢谢!

3 楼

深圳华信群英科技有限公司,目前主要从事软件外包开发、高级软件人才定向输送等业务,面对日益严峻的大学生就业难和IT企业招聘难,自2006以来,与知名通信软件公司正式签订定向输送人才的合作协议,针对想进入软件行业的人员提供企业实训,实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段,共计900学时。
企业订单委培,内训前签订就业安置协议,100%保证就业。实训结束之后,在华信群英科技及其战略合作伙伴从事通信软件研发工作。欢迎有意向者加QQ:649846168咨询。

我来回复

您尚未登录,请登录后再回复。点此登录或注册