前言
阅读本文之前你需要明确知道函数指针和普通函数的区别,对这两者本文不做过多说明
目标
使用函数指针数组建立一套bpm工作流框架。这套框架在各种oa以及某几个大型通信公司应用的很广泛
适应场景
多分枝(类似Swtich)条件下、处理函数的形参列表和返回类型相同。如:
int func1(const char *pszContent);
int func2(const char *pszContent);
...
int funcN(const char *pszContent);
void processMsg(int iMsgType, const char *pszContent)
{
switch(iMsgType)
{
case 1: func1(pszContent);
break;
case 2: func2(pszContent);
break;
...
case N: funcN(pszContent);
break;
}
对于上述场景,我们可以采用函数指针数组的方式处理,如下:
typedef int (*pFunc)(const char*); //创建函数指针
pFunc arrFuncPoint[n+1]; //创建函数指针数组
//初始化指针数组
void init()
{
arrFuncPoint[0] = 0;
arrFuncPoint[1] = func1;