Учитывая, что у меня есть указатель на функцию (например, dlsym()
) и связанный список типизированных аргументов, как я могу создать вызов функции C с этими аргументами?
Пример:
struct param {
enum type { INT32, INT64, STRING, BOOL } type;
union { int i32; long long i64; char *str; bool b; } value;
struct param *next;
};
int call_this(int (*function)(), struct param *args)
{
int result;
/* magic here that calls function(), which has a prototype of
f(int, long long, char *, bool); , when args consist of a linked list of
INT32, INT64, STRING, BOOL types. */
return result;
}
ОС - Linux.Мне бы хотелось, чтобы решение было переносимым на архитектуру MIPS, PPC и x86 (все 32 бита) с использованием GCC в качестве компилятора.
Спасибо!