函数指针实现 switch功能

论坛 期权论坛 脚本     
匿名技术用户   2021-1-6 18:09   17   0

前提要求是:

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);

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP