C関数(たとえば、stdlib、math ...)を動的に呼び出したいと思います。これは、私のCプログラムがランダム関数(例printf
)へのポインターとその署名(char配列としてコード化:char *
、...)しか知らないことを意味します。
&printf
私の目標は、関数へのポインター( )、署名(何らかの方法でコード化されているchar[]
)、およびパラメーターをlong[]
(long
実際のデータ型ではなく、1つの長い値がdouble値、ポインターを表すこともできる)として取得するreflectCall関数です。 ...)。
したがって、reflect関数のシグネチャは次のようになります。
long reflectCall(void *funcPointer, char[] types, long[] args)
関数は、関数の実際の呼び出しを実行し*funcPointer
、最終的にその結果を返す必要があります。
その結果、ポインタポインタを作成できません。たとえば、このように:
int (*functionPtr)(int,int);
誰かがこの問題を解決する方法のヒントを教えてもらえますか、またはリファレンス実装を提案できますか?