Re: [問題] 作為一個程式設計人員,有可以完全不碰C …

看板C_and_CPP作者 (小傑)時間16年前 (2009/10/26 10:54), 編輯推噓8(8016)
留言24則, 8人參與, 最新討論串10/11 (看更多)
我想請問一個問題 ( C語言 ) 如果今天開發一個函式庫給客戶使用 而這個函式庫中會呼叫客戶提供的函式 但是開發者並不知道客戶函式的名稱 只知道函式的回傳值型別與所需參數的型別 在這個情況下 除了使用function pointer 還有其它方式可以實作嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.165.83

10/26 11:01, , 1F
沒有。這需求簡單的說就是要動態呼叫..動態呼叫在C裡面
10/26 11:01, 1F

10/26 11:01, , 2F
就是function pointer
10/26 11:01, 2F

10/26 11:02, , 3F
指標就是專門解決那些你在run time才能知道的位址
10/26 11:02, 3F

10/26 11:06, , 4F
理論上不可能不知道函數名稱, 即便提供了.dll, 也要另外
10/26 11:06, 4F

10/26 11:06, , 5F
提供.h(放宣告), 通常能順便附個.lib(即使只有entry)方
10/26 11:06, 5F

10/26 11:07, , 6F
便linking更好XD 就算使用GetProcAddress()你也是要知道
10/26 11:07, 6F

10/26 11:07, , 7F
三樓的再看清楚一點 library不知道Client傳進去的函式
10/26 11:07, 7F

10/26 11:07, , 8F
要拿的Func Addr的name才有辦法Get回來用不是嗎?_?
10/26 11:07, 8F

10/26 11:07, , 9F
是完全正常的 你傳CALLBACK進library的時侯函式名本來就
10/26 11:07, 9F

10/26 11:07, , 10F
可以隨便取
10/26 11:07, 10F

10/26 11:08, , 11F
靠夭我看錯了, 這裡的確是CallBack不是用LoadLibrary的
10/26 11:08, 11F

10/26 11:08, , 12F
case, 不好意思....Orz
10/26 11:08, 12F

10/26 11:17, , 13F
三樓不就是 h 大你自己嗎? QQ
10/26 11:17, 13F

10/26 11:18, , 14F
(哭哭)是在說小弟我啦....Q_Q~
10/26 11:18, 14F

10/26 11:28, , 15F
V 大搞笑了 XDDDDD
10/26 11:28, 15F

10/26 11:37, , 16F
正好有朋友用MSN在和人家討論obj/lib/dll的問題嘛Q_Q~
10/26 11:37, 16F

10/26 11:54, , 17F
那再請問一下 因為我不會JAVA JAVA沒有指標的話 該如何實作呢?
10/26 11:54, 17F

10/26 11:55, , 18F
Java好像沒有function pointer的替代品?
10/26 11:55, 18F

10/26 11:56, , 19F
C#有個類似的delegate可以用
10/26 11:56, 19F

10/26 12:21, , 20F
C++/C#/Java 都可以用 virtual function 達到這個功能
10/26 12:21, 20F

10/26 12:28, , 21F
對齁 還有virtual function這一招 感謝指教
10/26 12:28, 21F

10/26 13:00, , 22F
說穿了就是 template method XD
10/26 13:00, 22F

10/26 14:01, , 23F
不過virtual function的效能 恩恩...(拖走)
10/26 14:01, 23F

10/26 15:50, , 24F
virtual function 效能和 function pointer 是一樣的
10/26 15:50, 24F
文章代碼(AID): #1AvGzye7 (C_and_CPP)
討論串 (同標題文章)
完整討論串 (本文為第 10 之 11 篇):
文章代碼(AID): #1AvGzye7 (C_and_CPP)