2012-10-26 24 views
0

背景調用一個函數:我創建一個庫,允許一個進程使用IPC另一個進程調用另一個函數。是否有可能只在運行時使用函數指針與已知的參數數量和類型

每個過程都需要進行登記其功能:

void register_function(char* function_name, 
         void(*func)(), 
         int nb_parameters, 
         const int parameters_type[]) 

我的問題是,當我需要實際調用該函數它是通過IPC請求後,我無法通話,因爲數量和類型的功能參數僅在運行時纔可知。

我想致電使用動態創建一個結構的功能,但我不知道有關的參數,我應該使用或者即使它是一個好主意的順序。

有什麼想法?

+0

當然可以做手工彙編,只要你知道(或可檢測)函數使用調用約定。 –

+0

恐怕你需要手動完成。 –

+0

你使用什麼編譯器?我知道如何在MSVC中一起破解這個(不借助彙編程序),但是這在任何情況下都不會是可移植的。 – tyomitch

回答

2

我建議你使用兩個參數:

第一個參數類型:(int)。含義 - >參數的數目

第二個參數類型:(無效*) - >列表由第一個參數指示如此多的爭論。

就像在主argc和argv。

此致敬禮。

+1

這是如何保持參數的類型? – newacct

相關問題