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