2014-02-24 279 views
1

如何將函數指針傳遞給另一個函數?我有這樣的功能:Llvm C++ API將函數指針傳遞給另一個函數

std::string PRINT_STATE_NAME(pPrintState func); 

其中pPrintState是這樣的類型定義:

typedef void (*pPrintState)(std::string* buffer); 

所以我JIT編譯pPrintState並有其LLVM ::函數類型可用。

接下來我想從llvm C++ API調用上面定義的PRINT_STATE_NAME()。不幸的是我無法弄清楚傳遞給調用指令的參數。 Atm我使用轉換後的pPrintState的內部類型創建了llvm :: GlobalVariable。但我應該通過什麼作爲初始值設定項?或者我在這裏完全走錯了路?任何幫助表示讚賞!謝謝!

回答

1

你需要獲得pPrintState的地址(JIT'ed一個,經由getPointerToFunction()或getPointerToNamedFunction())施放此地址(如整數),以pPrintState和作爲參數傳遞。