Comment appeler une fonction à l'aide d'un pointeur sur cette fonction - C - Programmation
Marsh Posté le 08-06-2004 à 19:28:10
Carol Poulin a écrit : Je dois écrire une fonction qui prend en argument une liste de type générique. De ce fait lorsque j'écris ma fonction, je ne sait pas quel type (de struct) sera passer en argument. Je veut donc faire appelle à un pointeur générique (void * compare qui pointera sur une autre fonction, mais qui peut changer. Comment coder l'appel cette autre fonction à l'aide d'un pointeu. |
je ne comprends pas ce que vous voulez faire mais pour déclarer un pointeur sur fonction et l'utiliser ensuite il faut faire comme suit:
Code :
|
Marsh Posté le 08-06-2004 à 19:39:52
moi en param_a_la_con je passe un pointeur sur une structure genre ctx (contexte), afin d'être générique, mais bon, ce n'est pas forcémment la panacée ...
Marsh Posté le 08-06-2004 à 20:26:37
Comment je fait pour initialiser le pointeur de fonction déclaré à une adresse de fonction si la fonction dépend du type de struct passer en paramètre?
Code :
|
Marsh Posté le 08-06-2004 à 21:18:47
Il sert à quoi le (int) entre parenthèse avant l'affectation Doc ?
Marsh Posté le 08-06-2004 à 21:20:18
Taz a écrit : à l'exemple |
EDIT: cai bon...
Marsh Posté le 10-06-2004 à 02:21:47
Pas besoin de deréférencer pour appeler la fonction : ptr_func(param_a_la_con) marche aussi bien.
Marsh Posté le 10-06-2004 à 07:11:42
tout simplement parce qu'un jour, il a été décidé que ce n'était pas nécessaire. d'ou la validité de (*********************************************f)()
Marsh Posté le 10-06-2004 à 08:35:19
Carol Poulin a écrit : Comment je fait pour initialiser le pointeur de fonction déclaré à une adresse de fonction si la fonction dépend du type de struct passer en paramètre? |
Marsh Posté le 10-06-2004 à 08:45:31
moi je dirais plutot fait de la généricité
// une fonction générique
int f(void* args);
struct FooArgs;
int Foo(void* args)
{
struct FooArgs *fargs = args;
// traitement
}
etc
encore une fois, j'ai donné plusieurs fois le même exemple sur comment faire
Marsh Posté le 08-06-2004 à 19:18:33
Je dois écrire une fonction qui prend en argument une liste de type générique. De ce fait lorsque j'écris ma fonction, je ne sait pas quel type (de struct) sera passer en argument. Je veut donc faire appelle à un pointeur générique (void * compare qui pointera sur une autre fonction, mais qui peut changer. Comment coder l'appel cette autre fonction à l'aide d'un pointeu.