看板 C_and_CPP 關於我們 聯絡資訊
我想請問一個問題 ( C語言 ) 如果今天開發一個函式庫給客戶使用 而這個函式庫中會呼叫客戶提供的函式 但是開發者並不知道客戶函式的名稱 只知道函式的回傳值型別與所需參數的型別 在這個情況下 除了使用function pointer 還有其它方式可以實作嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.165.83
holymars:沒有。這需求簡單的說就是要動態呼叫..動態呼叫在C裡面 10/26 11:01
holymars:就是function pointer 10/26 11:01
holymars:指標就是專門解決那些你在run time才能知道的位址 10/26 11:02
VictorTom:理論上不可能不知道函數名稱, 即便提供了.dll, 也要另外 10/26 11:06
VictorTom:提供.h(放宣告), 通常能順便附個.lib(即使只有entry)方 10/26 11:06
VictorTom:便linking更好XD 就算使用GetProcAddress()你也是要知道 10/26 11:07
holymars:三樓的再看清楚一點 library不知道Client傳進去的函式 10/26 11:07
VictorTom:要拿的Func Addr的name才有辦法Get回來用不是嗎?_? 10/26 11:07
holymars:是完全正常的 你傳CALLBACK進library的時侯函式名本來就 10/26 11:07
holymars:可以隨便取 10/26 11:07
VictorTom:靠夭我看錯了, 這裡的確是CallBack不是用LoadLibrary的 10/26 11:08
VictorTom:case, 不好意思....Orz 10/26 11:08
legnaleurc:三樓不就是 h 大你自己嗎? QQ 10/26 11:17
VictorTom:(哭哭)是在說小弟我啦....Q_Q~ 10/26 11:18
saxontai:V 大搞笑了 XDDDDD 10/26 11:28
VictorTom:正好有朋友用MSN在和人家討論obj/lib/dll的問題嘛Q_Q~ 10/26 11:37
AJE:那再請問一下 因為我不會JAVA JAVA沒有指標的話 該如何實作呢? 10/26 11:54
james732:Java好像沒有function pointer的替代品? 10/26 11:55
james732:C#有個類似的delegate可以用 10/26 11:56
littleshan:C++/C#/Java 都可以用 virtual function 達到這個功能 10/26 12:21
AJE:對齁 還有virtual function這一招 感謝指教 10/26 12:28
saxontai:說穿了就是 template method XD 10/26 13:00
hilorrk:不過virtual function的效能 恩恩...(拖走) 10/26 14:01
littleshan:virtual function 效能和 function pointer 是一樣的 10/26 15:50