これが悪い考えである理由を私は知っています、そしてこれがC ++テンプレートが作成された理由であることも知っています、しかし私は楽しみと学習のためにCでそれをしています。
私はPythonをアプリケーションに埋め込んでおり、アプリケーションの実行時に呼び出すことができるように、特定のC関数を任意のタイプで登録できるようにしたいと考えていました。このため、それらへのポインタが(単純なvoid *として)格納されます。
いくつかの基本的なマクロの楽しみで、これらの関数について必要なすべての情報を取得し、それも格納しました-関数ポインター、戻り値のサイズ(およびそれが無効の場合)、引数の数、およびそれらの各サイズ。
そのため、私は最終段階で立ち往生しています。これは、適切なデータを使用した関数ポインターの実際の呼び出しです。私はこの種のことが可能であるとかなり確信しています(私は自分の時間にスタックエラーを引き起こしました)が、もっと...合法的な方法があるかどうか疑問に思いました。
理想は次のようになると思います。
void call_function(void* function, void* return, void* arg_data, int arg_data_size);
そのようなものは存在しますか?
ありがとう