我想動態地調用C函數(例如,形成stdlib,數學...)。這意味着我的C程序只知道指向隨機函數(例如printf
)及其簽名(編碼爲char數組:char *
,...)的指針。C - 不帶函數指針的動態函數調用
我的目標是reflectCall功能是獲取一個指向函數(&printf
),簽名(在char[]
莫名其妙編碼),參數爲long[]
(long
是不實際的數據類型,一個長值能也代表一個double值,指針,...)。因此
我反映函數的簽名是這樣的:
long reflectCall(void *funcPointer, char[] types, long[] args)
功能應該做的功能*funcPointer
的實際調用,最後返回其結果。
因此,我可以不是創建一個指針指針;例如像這樣:
int (*functionPtr)(int,int);
任何人都可以給我一個提示如何解決這個問題或建議任何參考實現嗎?
目前基本上沒有辦法在一個獨立於平臺的方式來做到這一點。 – 2013-03-12 22:25:40
對不起,你不能將可變參數傳遞給可變參數函數。 C只是不支持必要的反思。 – nneonneo 2013-03-12 22:25:48