免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 11731 | 回复: 31
打印 上一主题 下一主题

函数指针数组的动态赋值问题,求助。 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-25 13:51 |只看该作者 |倒序浏览
俺需要如下内容是动态生成的,游牧有办法?

int (*FunList[ 2 ])() = { Fun0, Fun1 } ;

即,这个数组的项 Fun0,Fun1 是动态生成的,或者是动态赋值的。

比如,根据不同的条件, FunList[0] = Fun0 , FunList[1]=Func3 ....

不知道俺说清楚木有?

晕了。

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
2 [报告]
发表于 2011-11-25 13:54 |只看该作者
说清楚了,但函数指针数组难道不可以动态赋值吗?

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
3 [报告]
发表于 2011-11-25 14:00 |只看该作者
函数指针数组的声明看起来太蛋疼了。。。。。

没看懂是什么意思,FunList[0] = somefun有什么问题?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2011-11-25 14:18 |只看该作者
函数指针数组的声明看起来太蛋疼了。。。。。

没看懂是什么意思,FunList[0] = somefun有什么问题?
tempname2 发表于 2011-11-25 14:00



    木有问题,问题是这个东东该如何赋值 ,也就是说 somefun 究竟是什么,俺是从数据库里面取出来的,不是写死在程序里面的,所以俺就搞不定了。

比如,俺根据条件一,从数据库里面取出 func0,fun3 ,要分别赋值给 FunList[0],FunList[1] , 而另一个条件下,俺从数据库里面取出的是 func1,func2 , 也是分别赋值给 FunList[0],FunList[1] .

就是这样子俺就搞不定了。

从数据库里面取出来的东东是字符串,也就是函数名。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2011-11-25 14:19 |只看该作者
说清楚了,但函数指针数组难道不可以动态赋值吗?
bruceteen 发表于 2011-11-25 13:54



    可以,问题是按照俺上面的要求,俺就搞不定了。

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
6 [报告]
发表于 2011-11-25 14:28 |只看该作者
我猜你的要求是
  1. typedef int (*TFUN)();

  2. TFUN GetFunAddressFromFunName( const char* funname )
  3. {
  4.     if( strcmp(funname,"func0")==0 )
  5.         ptr = &func0;
  6.     else if(  ……


  7.     return ptr;
  8. }
复制代码

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
7 [报告]
发表于 2011-11-25 14:34 |只看该作者
回复 4# snow888

估计是6楼说的那样吧。C语言做比较蛋疼,你要自己维护符号表,然后写个查询接口。动态语言可以直接eval。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2011-11-25 14:38 |只看该作者
我猜你的要求是
bruceteen 发表于 2011-11-25 14:28



    不是这个,你那个 func0 还是写死的啊,俺的意思是直接用那个 "func0" 来赋值,而不是判断是否是 “func0” 字符串来赋值,游牧有办法?

论坛徽章:
0
9 [报告]
发表于 2011-11-25 14:38 |只看该作者
顶6楼~~~~

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2011-11-25 14:43 |只看该作者
顶6楼~~~~
agathewiky 发表于 2011-11-25 14:38



    6 楼不符合俺的要求啊 。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP