Étant donné que j'ai un pointeur sur une fonction (fournie par dlsym()
par exemple) et une liste chaînée d'arguments typés, comment puis-je construire un appel de fonction C avec ces arguments?Construire un appel de fonction en C
Exemple:
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;
}
Le système d'exploitation est Linux. Je voudrais que la solution soit portable sur l'architecture MIPS, PPC et x86 (tous les 32 bits), en utilisant GCC comme compilateur.
Merci!
... préparez-vous à un piratage d'assemblage, car pour autant que je sache, le pur C ne le fait pas. –
... ou vous pouvez simplement utiliser la bibliothèque pratique. –