MFC如何通过字符串查找函数名?
譬如说,有如下函数:intfun1(inta,intb){returna+b;}intfun2(inta,intb){returna*b+b;}intotherfun(i...
譬如说,有如下函数:
int fun1(int a, int b){
return a+b;
}
int fun2(int a, int b){
return a*b+b;
}
int otherfun(int a, int b){
return a*b*b+a;
}
我现在想定义一个函数,输入值为一个字符串,输出值为以这个字符串作为函数名的指针,要怎么定义呢? 展开
int fun1(int a, int b){
return a+b;
}
int fun2(int a, int b){
return a*b+b;
}
int otherfun(int a, int b){
return a*b*b+a;
}
我现在想定义一个函数,输入值为一个字符串,输出值为以这个字符串作为函数名的指针,要怎么定义呢? 展开
1个回答
展开全部
系统没有提供这样的接口。只能你自己做一个从函数名 到函数指针映射的map
然后去查表。
如果参数个数和类型不固定,还要考虑参数问题,比较麻烦。
如果是固定的,那就简单多了。
然后去查表。
如果参数个数和类型不固定,还要考虑参数问题,比较麻烦。
如果是固定的,那就简单多了。
追问
参数的数目和类型是固定的~
这个映射要怎么做呢?
追答
//就按照你说的函数做例子吧。
typedef struct
{
char name[100];
int (*pfunc)(int,int);
}LIST;
LIST list[]={{"fun1",fun1},{"fun2",fun1}};
int call_func(char* name, int param1, int param2)
{
int i;
for(i = 0;i<sizeof list/sizeof list[0]; i ++)
if(strcmp(name, list[i].name) == 0)
{
return list[i].pfunc(param1, param2);
}
return -1; // not found
}
大致就是这样。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询