我正在構建一個構建AST的C解釋器(用C++編寫)。我想讓用戶有機會與真正的DLL進行通信。例如:我從DLL調用函數。這個函數需要一個指向函數的指針(回調)。有問題:我沒有真正的地址給一個函數,因爲我想給DLL函數的函數只存在於我的AST中的節點。有沒有辦法解決這個問題?我想過使用內置於我的解釋器中的類似代理的函數,它將委託給我的AST中的函數。問題是,代理函數必須具有相同的簽名才能從DLL函數中調用...並且我無法在運行時創建動態函數。解釋器中的函數指針
1
A
回答
1
你沒有具體說明你正在嘗試使用哪個API/dll,但是它們中的大多數提供了與用戶數據一起提供的void *
(或在窗口上的LPVOID
),其與回調函數指針一起提供,並且將被傳遞給回調函數,以及適用於回調的任何其他參數。
你可以做的是傳遞一個指針到您的AST,因爲這額外的指針,並寫出它將該void *
回一個AST *
,然後調用上AST你解釋實際回調的小包裝函數。
+0
聽起來不錯。我想我會試試:)。謝謝你們 – dcast
相關問題
- 1. c函數指針解釋
- 2. 模板化函數指針解釋
- 3. 解釋c指針參數
- 4. C++指針解釋
- 5. 指針C++解釋
- 6. 理解函數參數中的指針
- 7. 解釋指針指針問題
- 8. 瞭解c函數指針
- 9. 瞭解函數指針
- 10. 瞭解函數中的指針
- 11. 瞭解C中的函數和指針
- 12. 如何理解函數中的指針
- 13. 瞭解指針數組的指針作爲函數的參數
- 14. 請解釋這個函數指針參數
- 15. 解釋這些函數指針聲明的區別
- 16. C++指針地址解釋
- 17. 解釋指南針@SearchableComponent @SearchableReference
- 18. C語言中的指針解釋
- 19. C++中函數指針的指針
- 20. gmtime函數釋放():無效指針
- 21. 函數指針指向一個函數指針的函數
- 22. 在C數組的釋放器++指針
- 23. 有人可以解釋這個函數指針語法嗎?
- 24. 重新解釋成員函數指針是個好主意嗎?
- 25. 解釋這個虛函數指針代碼?
- 26. c函數指針反函數指針
- 27. 指向函數或仿函數的指針?函數發生器
- 28. 字符數組解釋爲char指針在構造函數中的幫助
- 29. 指針?指針函數?
- 30. 爲什麼numeric_limits <T> :: min被編譯器解釋爲函數指針?
我聞到一項家庭作業。 – Brian
不,這是錯誤的;) – dcast
你可以保存用戶給定的指針(它只是一個AST節點),向DLL傳遞一個指向轉發函數的函數指針,然後當轉發函數被調用時,它會激活代碼將執行用戶給出的AST節點。這有道理,看起來有可能嗎? –