一、函数指针的应用
void (*IAP_Entry) (u32 param_tab[], u32 result_tab[]);
IAP_Entry = (*(void(*)())IAP_ENTER_ADR);
IAP_Entry = (*(void(*)())IAP_ENTER_ADR);
(*IAP_Entry)(paramin, paramout);
void (*userProgram)();
userProgram = (void (*)()) (USER_PROG);
(*userProgram)(); == userProgram();
typedef int (init_fnc_t)(void);
init_fnc_t *init_sequence[]=
{
cpu_init,
board_init,
env_init,
init_baudrate,
NULL,
};
for(init_fnc_ptr=init_sequence; *init_fnc_ptr;++init_fnc_ptr)
{
if((*init_fnc_ptr)()!=0)//==init_fnc_ptr()!=0
hang();
}
void (*GprsFuncVect[])(char *str)=
{
NULL,
GPRS_DataStream,
NULL
};
void (*theKernel)(int zero,int arch,uint params);
theKernel=(void (*)(int,int,uint))ntohl(h