表驱动的代码实现

来源:互联网 发布:小米手机怎么清楚数据 编辑:程序博客网 时间:2024/05/20 16:13

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


 

原创粉丝点击