前提要求是:
switch ( state )
{
case state1:
Fun1( parameter list)
case state2 :
Fun2( parameter list)
}
要求处理函数的参数 是完全相同的
下面是使用函数指针的处理
void func1( int a);
void func2(int b);
首先
enum
{
REAL_DATA_TYPE_FIRST,
FUNC1,
FUNC2,
REAL_DATA_TYPE_LAST
}
定义 函数指针
typedef void(*Func)(int a);
定义一个函数指针数组
Func funs[REAL_DATA_TYPE_LAST];
上面完成了定义工作
重要的一步
利用宏定义 实现将函数指针复制到数组中
#define ADD_FUNC_MAP( t, func) / funs[t] = func
ADD_FUNC_MAP( FUNC1, &func1) ;
ADD_FUNC_MAP( FUNC2, &func2) ;
使用时
Func pFun = funs[i];//(i表示对函数的选择)
int a = 0;
*pFun(a);