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;
}
我现在想定义一个函数,输入值为一个字符串,输出值为以这个字符串作为函数名的指针,要怎么定义呢?
展开
 我来答
风若远去何人留
2016-08-15 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450134
专业C/C++软件开发

向TA提问 私信TA
展开全部
系统没有提供这样的接口。只能你自己做一个从函数名 到函数指针映射的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
}

大致就是这样。 

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式