Re: [問題] 請問Function pointer陣列問題

看板Programming作者 ( )時間17年前 (2008/04/03 08:15), 編輯推噓5(507)
留言12則, 3人參與, 最新討論串3/4 (看更多)
※ 引述《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 (uranus@it.muds.net) 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

04/03 19:26, , 1F
若直接給boost.function是不是會害到他XD
04/03 19:26, 1F

04/03 21:54, , 2F
tr1/functional 解決所有問題 XDb
04/03 21:54, 2F

04/03 21:55, , 3F
當然.. 效率會變差就是了
04/03 21:55, 3F

04/04 00:30, , 4F
其實效率影響很小,不要放在最核心處就好
04/04 00:30, 4F

04/04 15:52, , 5F
效率哪裡會變差?
04/04 15:52, 5F

04/04 20:13, , 6F
generic function size 比原始 fptr 大
04/04 20:13, 6F

04/04 20:13, , 7F
對於 generic function,func call 的數量
04/04 20:13, 7F

04/04 20:14, , 8F
也比直接的 fptr 多,應該吧 @@"
04/04 20:14, 8F

04/04 20:15, , 9F
還是我哪裡有搞錯 @_@ (其實我很少用傳統
04/04 20:15, 9F

04/04 20:15, , 10F
fptr..都是瘋狂使用 tr1/functional了XD )
04/04 20:15, 10F

04/04 21:24, , 11F
你顧慮的其實 inline + IPA 都可以解決的
04/04 21:24, 11F

04/04 21:46, , 12F
哦,I see,多謝指點 <(_ _)>
04/04 21:46, 12F
文章代碼(AID): #17z98bks (Programming)
討論串 (同標題文章)
文章代碼(AID): #17z98bks (Programming)