j'aimerai avoir un stratagème pour appeler dynamiquement une fonction...
j'ai pensé a mettre dans un tableau, des pointeurs pointant vers les
fonctions que je veux appeler, mais je ne voit pas comment executer une
fonction en manipulant un pointeur sur elle....
In 'fr.comp.lang.c', "Nicolas aunai" @free.fr> wrote:
Oui, c'est un bête shell...
par ma foi ! il y bout de temps que je fais des shell sans que je n'en susse rien, et je vous en suis le plus obligé du monde de m'avoir appris cela.
-- D'après Molière in Le Bourgeois Gentilhomme.
Moi, pareil j'ai découvert récemment que je faisais de l'Extrem Programming sans le savoir (Cycle en V a itérations courtes).
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Nicolas aunai
Emmanuel Delahaye a écrit:
par ma foi ! il y bout de temps que je fais des shell sans que je n'en susse rien, et je vous en suis le plus obligé du monde de m'avoir appris cela.
-- D'après Molière in Le Bourgeois Gentilhomme.
act II scene 4
Moi, pareil j'ai découvert récemment que je faisais de l'Extrem Programming sans le savoir (Cycle en V a itérations courtes).
ah ouais, ah ouais.... on peut demander un peu plus de détails sur ce qu'est un "cycle en V a itération double" sans se faire taper sur les doigt ou.... pas ?
par ma foi ! il y bout de temps que je fais des shell sans que je
n'en susse rien, et je vous en suis le plus obligé du monde de
m'avoir appris cela.
-- D'après Molière in Le Bourgeois Gentilhomme.
act II scene 4
Moi, pareil j'ai découvert récemment que je faisais de l'Extrem
Programming sans le savoir (Cycle en V a itérations courtes).
ah ouais, ah ouais....
on peut demander un peu plus de détails sur ce qu'est un "cycle en V a
itération double" sans se faire taper sur les doigt ou.... pas ?
par ma foi ! il y bout de temps que je fais des shell sans que je n'en susse rien, et je vous en suis le plus obligé du monde de m'avoir appris cela.
-- D'après Molière in Le Bourgeois Gentilhomme.
act II scene 4
Moi, pareil j'ai découvert récemment que je faisais de l'Extrem Programming sans le savoir (Cycle en V a itérations courtes).
ah ouais, ah ouais.... on peut demander un peu plus de détails sur ce qu'est un "cycle en V a itération double" sans se faire taper sur les doigt ou.... pas ?
void(*t[3])(int); // tableau de fonctions à parametre entier
^^^ Ha, je ne pense pas non. Un caractere accentue dans un source C, c'est pas tres portable (la preuve etant le resultat de la compilation par gcc).
Non. les caractères accentuées sont OK. gcc les tolères tout à fait dans les commentaires. Et certains compilateurs récents (visual C++ 7.x) les tolèrent de partout (nom de variable, etc...), comme l'autorise tout à fait la norme.
J'ai pas dit que c'etait pas standard. J'ai dit que c'etait pas
portable. Nuance... Je suis pret a parier que la raison pour laquelle mon gcc a refuse l'accent est parce que sur le PC que j'utilise, j'utilise une locale qui ne supporte pas les accents...
-- Bertrand Mollinier Toublet "Reality exists" - Richard Heathfield, 1 July 2003
Richard Delorme wrote:
Bertrand Mollinier Toublet a écrit:
void(*t[3])(int); // tableau de fonctions à parametre entier
^^^
Ha, je ne pense pas non. Un caractere accentue dans un source C, c'est
pas tres portable (la preuve etant le resultat de la compilation par gcc).
Non. les caractères accentuées sont OK. gcc les tolères tout à fait dans les
commentaires. Et certains compilateurs récents (visual C++ 7.x) les
tolèrent de partout (nom de variable, etc...), comme l'autorise tout à fait
la norme.
J'ai pas dit que c'etait pas standard. J'ai dit que c'etait pas
portable. Nuance... Je suis pret a parier que la raison pour laquelle
mon gcc a refuse l'accent est parce que sur le PC que j'utilise,
j'utilise une locale qui ne supporte pas les accents...
--
Bertrand Mollinier Toublet
"Reality exists" - Richard Heathfield, 1 July 2003
void(*t[3])(int); // tableau de fonctions à parametre entier
^^^ Ha, je ne pense pas non. Un caractere accentue dans un source C, c'est pas tres portable (la preuve etant le resultat de la compilation par gcc).
Non. les caractères accentuées sont OK. gcc les tolères tout à fait dans les commentaires. Et certains compilateurs récents (visual C++ 7.x) les tolèrent de partout (nom de variable, etc...), comme l'autorise tout à fait la norme.
J'ai pas dit que c'etait pas standard. J'ai dit que c'etait pas
portable. Nuance... Je suis pret a parier que la raison pour laquelle mon gcc a refuse l'accent est parce que sur le PC que j'utilise, j'utilise une locale qui ne supporte pas les accents...
-- Bertrand Mollinier Toublet "Reality exists" - Richard Heathfield, 1 July 2003
Bruno Desthuilliers
Nicolas aunai wrote:
Emmanuel Delahaye a écrit:
par ma foi ! il y bout de temps que je fais des shell sans que je n'en susse rien, et je vous en suis le plus obligé du monde de m'avoir appris cela.
-- D'après Molière in Le Bourgeois Gentilhomme.
act II scene 4
Moi, pareil j'ai découvert récemment que je faisais de l'Extrem Programming sans le savoir (Cycle en V a itérations courtes).
ah ouais, ah ouais.... on peut demander un peu plus de détails sur ce qu'est un "cycle en V a itération double"
courte. Pas double, courte.
sans se faire taper sur les doigt ou.... pas ?
Sur fr.comp.developpement, thread "c'est quoi un programmeur professionnel".
<emdel hs="total"> BTW, mon cher Emmanuel (tu permets que je t'appelle 'mon cher' ?), il y a plus dans les "méthodes agiles" (j'ai un bonus chaque fois que je place un buzzword !) que les itérations courtes... Pour avoir le label XP (chouette, encore un buzzword-bonus), il faut au moins aussi faire du Test Driven Development (et de trois !),... je te laisse le choix du troisième critère, ça me fera l'occasion de placer d'autres buzzwords (bingo !). </emdel>
Bruno
Nicolas aunai wrote:
Emmanuel Delahaye a écrit:
par ma foi ! il y bout de temps que je fais des shell sans que je
n'en susse rien, et je vous en suis le plus obligé du monde de
m'avoir appris cela.
-- D'après Molière in Le Bourgeois Gentilhomme.
act II scene 4
Moi, pareil j'ai découvert récemment que je faisais de l'Extrem
Programming sans le savoir (Cycle en V a itérations courtes).
ah ouais, ah ouais....
on peut demander un peu plus de détails sur ce qu'est un "cycle en V a
itération double"
courte. Pas double, courte.
sans se faire taper sur les doigt ou.... pas ?
Sur fr.comp.developpement, thread "c'est quoi un programmeur professionnel".
<emdel hs="total">
BTW, mon cher Emmanuel (tu permets que je t'appelle 'mon cher' ?), il y
a plus dans les "méthodes agiles" (j'ai un bonus chaque fois que je
place un buzzword !) que les itérations courtes... Pour avoir le label
XP (chouette, encore un buzzword-bonus), il faut au moins aussi faire du
Test Driven Development (et de trois !),... je te laisse le choix du
troisième critère, ça me fera l'occasion de placer d'autres buzzwords
(bingo !).
</emdel>
par ma foi ! il y bout de temps que je fais des shell sans que je n'en susse rien, et je vous en suis le plus obligé du monde de m'avoir appris cela.
-- D'après Molière in Le Bourgeois Gentilhomme.
act II scene 4
Moi, pareil j'ai découvert récemment que je faisais de l'Extrem Programming sans le savoir (Cycle en V a itérations courtes).
ah ouais, ah ouais.... on peut demander un peu plus de détails sur ce qu'est un "cycle en V a itération double"
courte. Pas double, courte.
sans se faire taper sur les doigt ou.... pas ?
Sur fr.comp.developpement, thread "c'est quoi un programmeur professionnel".
<emdel hs="total"> BTW, mon cher Emmanuel (tu permets que je t'appelle 'mon cher' ?), il y a plus dans les "méthodes agiles" (j'ai un bonus chaque fois que je place un buzzword !) que les itérations courtes... Pour avoir le label XP (chouette, encore un buzzword-bonus), il faut au moins aussi faire du Test Driven Development (et de trois !),... je te laisse le choix du troisième critère, ça me fera l'occasion de placer d'autres buzzwords (bingo !). </emdel>
Bruno
Bertrand Mollinier Toublet
Richard Delorme wrote:
Bertrand Mollinier Toublet a écrit:
J'ai pas dit que c'etait pas standard. J'ai dit que c'etait pas portable. Nuance... Je suis pret a parier que la raison pour laquelle mon gcc a refuse l'accent est parce que sur le PC que j'utilise, j'utilise une locale qui ne supporte pas les accents...
OK ! je tiens le pari :) Dans ton exemple, gcc n'a pas reconnu le commentaire en //, à cause de l'option de compilation -ansi. Donc il considère que le reste de la ligne est du code et non du commentaire. Or gcc n'accepte pas les accents dans le code, sauf dans les commentaires et les chaînes de caractères littérales. Ainsi, gcc est perdu et se croît dans du code, il se plaint du caractère accentué. Essaie avec l'option -stdÉ9 au lieu de -ansi, et tu verras que le commentaire et le caractère accentué passe. Ou, si tu tiens à l'option -ansi, change le commentaire en /* ... */. Au sujet de la portabilité, il me semble évident qu'un commentaire en français n'a aucune ambition de portabilité, puisqu'il ne peut être compris que par les francophones. Curieusement, pour un commentaire d'une portabilité maximale, c'est-à-dire lisible par une majorité de personnes, il faudrait commenter en chinois. Il faudrait sans doute aussi écrire le code avec des trigraphes, car toutes les polices ne contiennent pas les caractères '{', '}', '[', ']', etc. Mais serait-ce bien raisonnable de publier un tel code illisible sur f.c.l.c ? Rappelons aussi qu'en français, les accents sont obligatoires car ils affectent le sens de certaines phrases, comme « le mari assassiné » à comparer avec « le mari assassine. »
Accorde (ou devrais-je dire accord'e :-).
-- Bertrand Mollinier Toublet "Reality exists" - Richard Heathfield, 1 July 2003
Richard Delorme wrote:
Bertrand Mollinier Toublet a écrit:
J'ai pas dit que c'etait pas standard. J'ai dit que c'etait pas
portable. Nuance... Je suis pret a parier que la raison pour laquelle
mon gcc a refuse l'accent est parce que sur le PC que j'utilise,
j'utilise une locale qui ne supporte pas les accents...
OK ! je tiens le pari :)
Dans ton exemple, gcc n'a pas reconnu le commentaire en //, à cause de
l'option de compilation -ansi. Donc il considère que le reste de la ligne
est du code et non du commentaire. Or gcc n'accepte pas les accents dans le
code, sauf dans les commentaires et les chaînes de caractères littérales.
Ainsi, gcc est perdu et se croît dans du code, il se plaint du caractère
accentué. Essaie avec l'option -stdÉ9 au lieu de -ansi, et tu verras que
le commentaire et le caractère accentué passe. Ou, si tu tiens à l'option
-ansi, change le commentaire en /* ... */.
Au sujet de la portabilité, il me semble évident qu'un commentaire en
français n'a aucune ambition de portabilité, puisqu'il ne peut être compris
que par les francophones. Curieusement, pour un commentaire d'une
portabilité maximale, c'est-à-dire lisible par une majorité de personnes,
il faudrait commenter en chinois. Il faudrait sans doute aussi écrire le
code avec des trigraphes, car toutes les polices ne contiennent pas les
caractères '{', '}', '[', ']', etc. Mais serait-ce bien raisonnable de
publier un tel code illisible sur f.c.l.c ?
Rappelons aussi qu'en français, les accents sont obligatoires car ils
affectent le sens de certaines phrases, comme « le mari assassiné » à
comparer avec « le mari assassine. »
Accorde (ou devrais-je dire accord'e :-).
--
Bertrand Mollinier Toublet
"Reality exists" - Richard Heathfield, 1 July 2003
J'ai pas dit que c'etait pas standard. J'ai dit que c'etait pas portable. Nuance... Je suis pret a parier que la raison pour laquelle mon gcc a refuse l'accent est parce que sur le PC que j'utilise, j'utilise une locale qui ne supporte pas les accents...
OK ! je tiens le pari :) Dans ton exemple, gcc n'a pas reconnu le commentaire en //, à cause de l'option de compilation -ansi. Donc il considère que le reste de la ligne est du code et non du commentaire. Or gcc n'accepte pas les accents dans le code, sauf dans les commentaires et les chaînes de caractères littérales. Ainsi, gcc est perdu et se croît dans du code, il se plaint du caractère accentué. Essaie avec l'option -stdÉ9 au lieu de -ansi, et tu verras que le commentaire et le caractère accentué passe. Ou, si tu tiens à l'option -ansi, change le commentaire en /* ... */. Au sujet de la portabilité, il me semble évident qu'un commentaire en français n'a aucune ambition de portabilité, puisqu'il ne peut être compris que par les francophones. Curieusement, pour un commentaire d'une portabilité maximale, c'est-à-dire lisible par une majorité de personnes, il faudrait commenter en chinois. Il faudrait sans doute aussi écrire le code avec des trigraphes, car toutes les polices ne contiennent pas les caractères '{', '}', '[', ']', etc. Mais serait-ce bien raisonnable de publier un tel code illisible sur f.c.l.c ? Rappelons aussi qu'en français, les accents sont obligatoires car ils affectent le sens de certaines phrases, comme « le mari assassiné » à comparer avec « le mari assassine. »
Accorde (ou devrais-je dire accord'e :-).
-- Bertrand Mollinier Toublet "Reality exists" - Richard Heathfield, 1 July 2003
PASDEPUBnoe.falzon
"Nicolas aunai" @free.fr> wrote:
Noé Falzon a écrit:
j'aimerai avoir un stratagème pour appeler dynamiquement une fonction...
Heu, à quoi cela peut-il servir ?
bah dans le cas d'une application réseau, où un serveur possède des fonctionnalités, un client peut s'y connecter et via un protocole particulier envoyer des requetes pour executer certaines fonctions.
comme les requetes sont envoyées lors de l'execution de l'application, ce sont des appels dynamiques aux fonctions du serveur qu'il faut faire.
voilà, c'est un exemple, il doit y en avoir d'autres
Mais il suffit pas de placer l'appel de la fonction dans une condition comme "if" ?
-- "Je ne deteste que les bourreaux" -- Albert Camus
Pour m'écrire, veuillez enlever PASDEPUB de mon adresse ;P
j'aimerai avoir un stratagème pour appeler dynamiquement une
fonction...
Heu, à quoi cela peut-il servir ?
bah dans le cas d'une application réseau, où un serveur possède des
fonctionnalités, un client peut s'y connecter et via un protocole
particulier envoyer des requetes pour executer certaines fonctions.
comme les requetes sont envoyées lors de l'execution de l'application, ce
sont des appels dynamiques aux fonctions du serveur qu'il faut faire.
voilà, c'est un exemple, il doit y en avoir d'autres
Mais il suffit pas de placer l'appel de la fonction dans une condition
comme "if" ?
--
"Je ne deteste que les bourreaux" -- Albert Camus
Pour m'écrire, veuillez enlever PASDEPUB de mon adresse ;P
j'aimerai avoir un stratagème pour appeler dynamiquement une fonction...
Heu, à quoi cela peut-il servir ?
bah dans le cas d'une application réseau, où un serveur possède des fonctionnalités, un client peut s'y connecter et via un protocole particulier envoyer des requetes pour executer certaines fonctions.
comme les requetes sont envoyées lors de l'execution de l'application, ce sont des appels dynamiques aux fonctions du serveur qu'il faut faire.
voilà, c'est un exemple, il doit y en avoir d'autres
Mais il suffit pas de placer l'appel de la fonction dans une condition comme "if" ?
-- "Je ne deteste que les bourreaux" -- Albert Camus
Pour m'écrire, veuillez enlever PASDEPUB de mon adresse ;P
Yves ROMAN
"Nicolas aunai" @free.fr> wrote:
Noé Falzon a écrit:
j'aimerai avoir un stratagème pour appeler dynamiquement une fonction...
Heu, à quoi cela peut-il servir ?
bah dans le cas d'une application réseau, où un serveur possède des fonctionnalités, un client peut s'y connecter et via un protocole particulier envoyer des requetes pour executer certaines fonctions.
comme les requetes sont envoyées lors de l'execution de l'application, ce sont des appels dynamiques aux fonctions du serveur qu'il faut faire.
voilà, c'est un exemple, il doit y en avoir d'autres
Mais il suffit pas de placer l'appel de la fonction dans une condition comme "if" ?
Typiquement, on peut faire un tableau de structure avec - nom de fonction - adresse de fonction Sur reception de demande, parcourir le tableau pour trouver le nom, et appeler la fonction correspondante. Reste le probleme des paramètres différents pour chaque fonction. Par exemple, les fonctions apelées dynamiquement pourraient avoir une interface commune - nb de parametres - adresse d'un tableau de pointeur pointant vers les valeurs des parametres
j'aimerai avoir un stratagème pour appeler dynamiquement une
fonction...
Heu, à quoi cela peut-il servir ?
bah dans le cas d'une application réseau, où un serveur possède des
fonctionnalités, un client peut s'y connecter et via un protocole
particulier envoyer des requetes pour executer certaines fonctions.
comme les requetes sont envoyées lors de l'execution de l'application, ce
sont des appels dynamiques aux fonctions du serveur qu'il faut faire.
voilà, c'est un exemple, il doit y en avoir d'autres
Mais il suffit pas de placer l'appel de la fonction dans une condition
comme "if" ?
Typiquement, on peut faire un tableau de structure avec
- nom de fonction
- adresse de fonction
Sur reception de demande, parcourir le tableau pour trouver le nom, et appeler
la fonction correspondante.
Reste le probleme des paramètres différents pour chaque fonction. Par exemple,
les fonctions apelées dynamiquement pourraient avoir une interface commune
- nb de parametres
- adresse d'un tableau de pointeur pointant vers les valeurs des parametres
j'aimerai avoir un stratagème pour appeler dynamiquement une fonction...
Heu, à quoi cela peut-il servir ?
bah dans le cas d'une application réseau, où un serveur possède des fonctionnalités, un client peut s'y connecter et via un protocole particulier envoyer des requetes pour executer certaines fonctions.
comme les requetes sont envoyées lors de l'execution de l'application, ce sont des appels dynamiques aux fonctions du serveur qu'il faut faire.
voilà, c'est un exemple, il doit y en avoir d'autres
Mais il suffit pas de placer l'appel de la fonction dans une condition comme "if" ?
Typiquement, on peut faire un tableau de structure avec - nom de fonction - adresse de fonction Sur reception de demande, parcourir le tableau pour trouver le nom, et appeler la fonction correspondante. Reste le probleme des paramètres différents pour chaque fonction. Par exemple, les fonctions apelées dynamiquement pourraient avoir une interface commune - nb de parametres - adresse d'un tableau de pointeur pointant vers les valeurs des parametres
manuel leclerc
Nicolas aunai declarait :
Emmanuel Delahaye a écrit:
typedef int puts_f (char const *s);
#include <stdio.h>
int main (void) { puts_f *pf = puts;
comment faire directement le typedef pour le pointeur ?
j'ai jamais bien compris les règles de priorité sur les casts :-)
manuel leclerc
-- Article posté via l'accès Usenet http://www.mes-news.com Accès par Nnrp ou Web
manuel leclerc
[...]
Je m'étonne que personne n'ait encore cité - bien que ça concerne moins le C que les API systeme Unix - l'utilisation du chargement dynamique. C'est ce qui permet de faire des applications avec des "plugins".
Extrait de "man dlopen" [...]
Ca concerne aussi d'autres systèmes, si tant est qu'on veuille bien leur donner le nom de système :-)
manuel leclerc -- Article posté via l'accès Usenet http://www.mes-news.com Accès par Nnrp ou Web
[...]
Je m'étonne que personne n'ait encore cité - bien que
ça concerne moins le C que les API systeme Unix
- l'utilisation du chargement dynamique. C'est ce qui
permet de faire des applications avec des "plugins".
Extrait de "man dlopen" [...]
Ca concerne aussi d'autres systèmes, si tant est qu'on
veuille bien leur donner le nom de système :-)
Je m'étonne que personne n'ait encore cité - bien que ça concerne moins le C que les API systeme Unix - l'utilisation du chargement dynamique. C'est ce qui permet de faire des applications avec des "plugins".
Extrait de "man dlopen" [...]
Ca concerne aussi d'autres systèmes, si tant est qu'on veuille bien leur donner le nom de système :-)