方法一:通过函数指针调用
(1)外部输入函数名,依次匹配函数名与函数,若匹配则返回该函数的入口地址,并通过函数指针接收,然后调用。
void fun_fun1()
{
printf("fun1\n");
}
void fun_fun2()
{
printf("fun2\n");
}
typedef void (* fp)();
fp get_fun_by_name(char *funname)
{
if(strcmp(funname,"fun1")==0)
return &fun_fun1;
else if(strcmp(funname,"fun2")==0)
return &fun_fun2;
else
return NULL;
}
int main()
{
char funname[128]={0};
scanf("%s",funname);
fp fuc=get_fun_by_name(funname);
if(fuc!=NULL)
{
fuc();
}
return 0;
}
方法二:通过宏函数进行调用
宏函数传入函数名,通过该函数名进行调用,注:不能指针传递,只能函数名原形传递。
#define fun(funname) \
do \
{\
fun_##funname();\
}\
while(0)
fun(fun1);