关闭

表驱动的代码实现

387人阅读 评论(0) 收藏 举报
分类:

1、在程序开发中,表驱动可以帮助我们来优化复杂的if-elseif -esle的结构,下面上代码

#include <stdio.h>
#include <stdlib.h>

/*加法*/
int Sum( int a, int b )
{
    return a + b;
}

/*减法*/
int Sub( int a, int b )
{
    return a - b;
}

/*乘法*/
int Multi( int a, int b )
{
    return a * b;
}

/*除法*/
int Division( int a, int b )
{
    return ( b == 0 ) ? 0 : (a / b);
}

/*定义函数指针*/
typedef int ( *pfFun )( int, int );

/*操作码*/
typedef enum _ENOPCODE
{
    OPCODE_ADD = 0,   /*加*/
    OPCODE_SUB,       /*减*/
    OPCODE_MULTI,     /*乘*/
    OPCODE_DIVISION,  /*除*/
    OPCODE_BUTT
}enOpCode;

/*使用驱动表计算*/
int GetOpResultByTable( int a, int b, enOpCode enOp )
{
    if ( OPCODE_BUTT == enOp )
    {
       return -1;
    }
    pfFun pf[ OPCODE_BUTT ] = { Sum, Sub, Multi, Division };
    return pf[ enOp ]( a, b );
   
}

int main( int argc, char *argv[] )
{
  int iTmp = 0;
  int a = 20;
  int b = 30;

  iTmp = GetOpResultByTable( a, b, OPCODE_ADD );
  printf( "Tmp is: %d\n", iTmp ); 
  return 0;
  
}


 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7834次
    • 积分:162
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:13篇
    • 译文:0篇
    • 评论:2条
    文章分类
    文章存档
    最新评论