Equivalent de call_user_func c++

Xenul Messages postés 35 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 28 octobre 2007 - 9 déc. 2006 à 10:59
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 - 13 déc. 2006 à 22:50
Bonzour,

Je cherche a faire un équivalent de la fonction php call_user_func.

Pour ceux qui ne connaisse pas :

void toto(string machin) { ... }

int main(void) {
string truc = "toto";
}

je joudrais appeler la fonction toto a partir de la string truc.Cela doit être possible, reste a trouver comment faire :/ et pour le moment je n'ait rien trouvé snifff

11 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 déc. 2006 à 11:18
Ce n'est pas possible de trouver une fonction à partir de son nom. De toutes facons ca m'a pas l'air très utile

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
Xenul Messages postés 35 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 28 octobre 2007
9 déc. 2006 à 11:21
Sisi ce doit être possible ^^ le php n'est qu'une implémentation en C :D, et de plus c'est trés utile, ca évite de surcharger avec des if & co ;p
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 déc. 2006 à 11:25
Ca veut dire quoi "une implémentation en C"?
Le nom d'une fonction n'a de sens qu'a la compilation. A l'exécution, une fonction n'a plus de nom, c'est juste une adresse. Il n'est donc plus possible de la retrouver à partir de son nom
Je sais qu'il y a des langages qui permettent de faire ca, mais pas le C

Sinon je veux bien voir un exemple ou c'est utile, parce que j'en n'ai jamais eu besoin moi

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
Xenul Messages postés 35 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 28 octobre 2007
9 déc. 2006 à 11:31
php : "Ce langage a été créé en 1994 par Rasmus Lerdorf pour son site Web. C'était à l'origine une bibliothèque logicielle en Perl dont il se servait pour conserver une trace des visiteurs qui venaient consulter son CV. Au fur et à mesure qu'il ajoutait de nouvelles fonctionnalités, Rasmus a transformé la bibliothèque en une implémentation en langage C, capable de communiquer avec les bases de données et de créer des applications dynamiques et simples pour le World Wide Web. Rasmus décida alors en 1995 de publier son code, pour que tout le monde puisse l'utiliser et en profiter. PHP s'appelait alors PHP/FI (pour Personal Home Page Tools/Form Interpreter)"

exemple d'utilité : bot irc, lorsque le proprio du bot lui passe des commandes, plutot que de vérif si la string = la commande, on vérif si la fonction éxiste, pui on l'appel, en php c'est trés pratique ^_^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 déc. 2006 à 11:36
L'implémentation de PHP est faite en C. Et alors?

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 déc. 2006 à 16:55
Si CGI est compilé, le script php par contre ne l'est pas, il est donc normal qu'on puisse appeler une fonction par son nom, il en est de même de tous les interprétés.
En langage compilé ça n'a bien entendu aucun sens ni aucun intérêt.

ciao...
BruNews, MVP VC++
0
Xenul Messages postés 35 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 28 octobre 2007
9 déc. 2006 à 17:07
rha snifff :(
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 déc. 2006 à 17:12
Je ne dois pas être très convaincant par rapport à BruNews...

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
Xenul Messages postés 35 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 28 octobre 2007
9 déc. 2006 à 17:16
héhé, je perd qd même po espoir, doit bien y  avoir une bidouille avec je ne sai quoi, genre pointeur ou autre afin d'en venir a bout :p
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 déc. 2006 à 17:27
Ben oui tu peut te faire un mécanisme perso, mais ca ne sert absolument à rien (il reviendra à faire la suite de if que tu veux justement éviter)

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
13 déc. 2006 à 22:50
salut,

sinon tu as les pointeurs de fonctions mais de toute façon, tu ne peux pas appeler une fonction C/C++ par nom...

il existe cependant un moyen d'appeler des méthodes par nom : faire un objet COM implémentant IDispatch et plus particulièrement implémenter sa méthode GetIDsOfNames() et Invoke...tu peux jetter un oeil à ATL mais je te souhaite bien du courage...et effectivement, je ne vois pas bien l'intérêt de ralentir le C/C++...

ShareVB
0
Rejoignez-nous