通过字符串调用函数

leiguang1108 2007-06-20 03:25:40
假设“sale”字符串对应sale()函数
希望通过字符串传递来调用字符串所对应的函数
请问该如何实现?
有人告诉小妹用函数指针,可不知道具体该如何
所用语言为C
...全文
404 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cceczjxy 2007-06-21
  • 打赏
  • 举报
回复
下面的方法和ls的基本一样,这需要你在编译钱知道你都有那些函数需要这样调用,切知道参数类型
struct fun{
void (name)();
char name_str[32];
};

int main()
{
struct fun fun_table[30];
char *p="fun2"
fun_table[0].name=fun1;
strcpy(fun_table[0].name_str,"fun1");

fun_table[1].name=fun2;
strcpy(fun_table[1].name_str,"fun2");

fun_table[2].name=fun3;
strcpy(fun_table[2].name_str,"fun3");

fun_table[3].name=fun4;
strcpy(fun_table[4].name_str,"fun4");

.
.
.
for(i=0;i<30;i++)
{
if(strcmp(fun_table[i].name_str,ptr)==0)
{
fun_table[i].name();
break;
}
}


}
robot_2 2007-06-21
  • 打赏
  • 举报
回复
返回值 (pfunc*)(参数列表) //定义函数指针

if (0==strcmp("sale",函数名))
pfunc=sale; //将函数指向目标函数
scorpiotears 2007-06-20
  • 打赏
  • 举报
回复
用C啊?template当我没说过
scorpiotears 2007-06-20
  • 打赏
  • 举报
回复
可以用宏啊,虽然办法老旧一点

比如说

#define macro(a,b) 这里呢可以使用#,##这样的符号

另外对于函数指针类型匹配的问题,用个template转下就好
leiguang1108 2007-06-20
  • 打赏
  • 举报
回复
那如果有100个函数需要调用
switch(index)
{
case0:
...
...
...
case100:
}
Arthur_ 2007-06-20
  • 打赏
  • 举报
回复
假设“sale”字符串对应sale()函数
希望通过字符串传递来调用字符串所对应的函数
请问该如何实现?
有人告诉小妹用函数指针,可不知道具体该如何
所用语言为C

==================================
int index;
int ret=-1;
char func[128]="sale";
char *functbl[128]={"sale","unsale"};

for(index=0;index<2;index++)
{
ret=strcmp(func,functbl[index]);
if(ret==0)
break;
}

switch(index)
{
case 0:
sale();
case 1:
unsale();
default:

}
www_adintr_com 2007-06-20
  • 打赏
  • 举报
回复
这可以通过转换来解决,所有的函数都是一个地址。
-------------------------------------------------
转换有什么用? 你把它放到表里面去了之后还要拿出来用的啊,用的时候你怎么传参数? 再把它转回来? 你怎么知道往会转成什么原型的指针来用? 除非你保存到表中的除了函数指针外还要保存一个原型有关的信息,而这是相当麻烦的。
leiguang1108 2007-06-20
  • 打赏
  • 举报
回复
有没有人能说具体的实现方法啊
最好有代码做讲解
分数不够可以提啊
lbaby 2007-06-20
  • 打赏
  • 举报
回复
回复人:adlay(www.adintr.com)(无可奈何天) ( 四级(中级)) 信誉:100 2007-06-20 15:35:50 得分:0
?
做成表的话就限制了所有放到表中的函数必须有相同的参数


---------------------------------------------

这可以通过转换来解决,所有的函数都是一个地址。

leiguang1108 2007-06-20
  • 打赏
  • 举报
回复
wenjia1108@hotmail.com.cn
leiguang1108 2007-06-20
  • 打赏
  • 举报
回复
各位大虾
用函数指针该如何实现呢?
digiworm 2007-06-20
  • 打赏
  • 举报
回复
函数指针而已,和参数没什么关系吧
www_adintr_com 2007-06-20
  • 打赏
  • 举报
回复
做成表的话就限制了所有放到表中的函数必须有相同的参数
  • 打赏
  • 举报
回复
做一个字符串表,和函数对应表,然后对应调用
www_adintr_com 2007-06-20
  • 打赏
  • 举报
回复
C 语言不是动态语言,本身没有这种功能。
你用函数指针也需要手动把一个一个的字符串和函数地址关联起来。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧