作者tinlans ( )
看板Programming
标题Re: [问题] 请问Function pointer阵列问题
时间Thu Apr 3 16:15:30 2008
※ 引述《mingtai1 (绿豆嘉义人)》之铭言:
: 小弟有个关於指标阵列的疑问
: 书上说指标阵列常拿来做选单系统, 不同的选项会呼叫不同的function
: 今天如果code如下
: // prototype
: void fun1 (int);
: void fun2 (int);
: void fun3 (int);
: // function pointer array
: void (*f[3]) (int) = {fun1, fun2, fun3};
: 这样是OK的
: 但是如果把fun2改成 void fun2 (int, int)
: 就会出现compile error (cannot convert from xxxxx)
: 也很明显的是函式的signature不合
要让 signature 和很简单,
你不要把参数型别局限於简单的资料结构就可以了,
把它变成 void * 或是 struct xxx *,
整个世界就会变得不一样。
: 所以我的疑问是
: 难道要用function pointer做到选单功能
: 每个选单功能的回传和接收的参数数目难道都要一样吗?这样一点也不弹性
写程式遇到这种状况,
一定有什麽突破点可以发现,
这时就要多动脑了。
: 所以我想问, 请问有没有什麽办法可以解这个问题?
: 让阵列里面每个pointer都指到一个函式
: 而且那些函式也可以有不同的回传和接收参数数目
: 感谢!
因为会问到这种问题的本身能力应该不会太差,
我先点到 void * 和 struct xxx * 为止,
还是想不通再来问。
--
Ling-hua Tseng (
[email protected])
Department of Computer Science, National Tsing-Hua University
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Software pipelining for VLIW architectures
Homepage:
https://it.muds.net/~uranus
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.228.185
1F:推 avhacker:若直接给boost.function是不是会害到他XD 140.123.19.235 04/03 19:26
2F:推 linjack:tr1/functional 解决所有问题 XDb 203.72.57.78 04/03 21:54
3F:→ linjack:当然.. 效率会变差就是了 203.72.57.78 04/03 21:55
4F:推 avhacker:其实效率影响很小,不要放在最核心处就好 140.123.19.235 04/04 00:30
5F:→ tinlans:效率哪里会变差? 61.230.228.185 04/04 15:52
6F:推 linjack:generic function size 比原始 fptr 大 203.72.57.78 04/04 20:13
7F:→ linjack:对於 generic function,func call 的数量 203.72.57.78 04/04 20:13
8F:→ linjack:也比直接的 fptr 多,应该吧 @@" 203.72.57.78 04/04 20:14
9F:→ linjack:还是我哪里有搞错 @_@ (其实我很少用传统 203.72.57.78 04/04 20:15
10F:→ linjack:fptr..都是疯狂使用 tr1/functional了XD ) 203.72.57.78 04/04 20:15
11F:→ tinlans:你顾虑的其实 inline + IPA 都可以解决的 61.230.228.185 04/04 21:24
12F:推 linjack:哦,I see,多谢指点 <(_ _)> 203.72.57.78 04/04 21:46