[C] Fonction générique, pointeur de fonction
Résolu/Fermé
Sauvegarde2
Messages postés
205
Date d'inscription
dimanche 14 décembre 2008
Statut
Membre
Dernière intervention
11 janvier 2015
-
18 juil. 2012 à 11:07
Sauvegarde2 Messages postés 205 Date d'inscription dimanche 14 décembre 2008 Statut Membre Dernière intervention 11 janvier 2015 - 20 juil. 2012 à 11:57
Sauvegarde2 Messages postés 205 Date d'inscription dimanche 14 décembre 2008 Statut Membre Dernière intervention 11 janvier 2015 - 20 juil. 2012 à 11:57
A voir également:
- Pointeur générique c
- Clé générique windows 10 - Guide
- Pointeur souris disparu windows 10 - Guide
- Pointeur souris - Guide
- Générique gossip girl - Forum Musique / Radio / Clip
- Générique du début de gossip girl - Forum Musique / Radio / Clip
4 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
20 juil. 2012 à 08:16
20 juil. 2012 à 08:16
je crois que tu ne répond pas vraiment à la question fiddy. son problème c'est de passé un tableau de pointeur dont le premier pointeur est un pointeur de fonction.
je ne vois pas de raison que ça ne fonctionne pas. essai peut être juste de faire un typedef :
Puis dans fexec_3 tu fait un truc du genre :
je ne vois pas de raison que ça ne fonctionne pas. essai peut être juste de faire un typedef :
typedef void* (*fonct)(void*,void*,void*);/: deéclaration non garantit, mais ça y ressemble.
Puis dans fexec_3 tu fait un truc du genre :
fonct f=argv[0]; return f(argv[1],argv[2],argv[3]);en gros l'idée, peut être quelques erreur de '*' ou pas '*'. Mais ça devrait être bon.
Utilisateur anonyme
19 juil. 2012 à 14:17
19 juil. 2012 à 14:17
Je ne sais pas, essaie, mais en tout cas, ca fera moins cracher le compilateur comme ca :
void* fexec_3(void* arg[4])
{
return (*arg[0](*arg[1], *arg[2], *arg[3]));
}
Aussi, je crois que tu ne peux renvoyer que des fonctions qui renvoie elle meme une valeure. Hors, les fonctions de multi_threading, et l'execution d'un thread en particulier, ne renvoie rien (de memoire). Ca poserai probleme !
void* fexec_3(void* arg[4])
{
return (*arg[0](*arg[1], *arg[2], *arg[3]));
}
Aussi, je crois que tu ne peux renvoyer que des fonctions qui renvoie elle meme une valeure. Hors, les fonctions de multi_threading, et l'execution d'un thread en particulier, ne renvoie rien (de memoire). Ca poserai probleme !
Sauvegarde2
Messages postés
205
Date d'inscription
dimanche 14 décembre 2008
Statut
Membre
Dernière intervention
11 janvier 2015
261
19 juil. 2012 à 15:18
19 juil. 2012 à 15:18
Ca ne va pas non plus puisqu'on déréférence quand même un void* sans faire de cast.
Le problème c'est que si je cast le pointeur de fonction contenu dans arg[0] je perd la généricité.
Je crois que mon problème n'a pas de solution :(
Le problème c'est que si je cast le pointeur de fonction contenu dans arg[0] je perd la généricité.
Je crois que mon problème n'a pas de solution :(
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
19 juil. 2012 à 21:03
19 juil. 2012 à 21:03
Bonjour,
Effectivement, le compilateur risque de râler avec ça ^^.
Moi, je verrais plutôt :
Effectivement, le compilateur risque de râler avec ça ^^.
Moi, je verrais plutôt :
void* fexec_3(void* arg[4]) { int i; void **t[4]; for(i=0;i<4;i++) t[i]=arg[i]; return *t; }
20 juil. 2012 à 10:12
Du coup, j'ai plus rien à rajouter.
20 juil. 2012 à 11:51
20 juil. 2012 à 11:57