我目前在一個情況下,我需要調用很多已在運行時提取的函數指針。問題是在編譯時參數是未知的。C後期綁定與未知的參數
但是,在運行時我收到的數據讓我知道函數的參數,我甚至可以將參數存儲在char *數組中。問題是我沒有一個函數指針模型來投射它。
在高級語言中,我知道有像「InvokeMethode(String name,Byte [] args)」這樣的函數來解釋字節數組的參數。由於C中不存在反射,我不希望用函數指針來看這個。
我想到的一個解決方案(它真的很糟糕)是在編譯時創建一個函數指針模型,它將以「硬編碼方式」將ptr轉換爲正確的類型以便像這樣使用:
void callFunc64Bits(void* funcPtr,long long args);
void callFuncVoid(void* funcPtr);
問題是,我將不得不像這樣創建100個函數,這將正確地投射指針。
有沒有辦法更有效地做到這一點?
非常感謝!
因此,使所有的功能,作爲參數'void *',並很高興.. –
嗯,我不是誰寫的功能,我需要加載在動態的方式 – Chaore
然後,我擔心現在有這樣做的方式,除非您將關於參數類型的信息一起傳遞,然後使用包裝來調用函數。 –