Article View: fr.comp.lang.c
Article #15056Re: Insérer une fonctions dans une structure?
From: frederic
Date: Sun, 16 Oct 2005 10:06
Date: Sun, 16 Oct 2005 10:06
49 lines
2639 bytes
2639 bytes
"Pierre Maurette" <maurettepierre@wanadoo.fr> writes:
> frederic@askme.fr, le 15/10/2005, a �crit :
> > Bonjour,
> >
> > y-a-t'il moyen en C, d'ins�rer une ou des fonctions dans une structure
> > de donn�es?
> >
> > typedef struct Complex Complex;
> > struct Complex {
> > int value;
> > int (*fn)();
> > char *mesg;
> > };
> Oui, c'est possible, c'est m�me facile. Vous aviez bien commenc�. Ce qui
> reste � faire, c'est initiliser et utiliser les membres fn de vos
> structures.
> Le plus simple pour initialiser C.fn, c'est de lui affecter l'adresse
> d'une fonction fonct. On peut pour cela utiliser indiff�remment fonct ou
> &fonct. Cette facilit� - que je trouve regrettable, mais c'est un troll
> - n'est pas unique dans le langage.
> Un code de test pourrait �tre (OK, le style est � chier):
>
> int carre(int i) {return i * i;}
> int cube(int i) {return i * i * i;}
>
> enum {ONE = 10, TWO};
>
> Complex table[] = {
> ONE, &cube, "premier message",
> TWO, &carre, "deuxi�me message",
> };
>
> printf("%d\t%d\t%s\n", table[0].value, table[0].fn(table[0].value),
> table[0].mesg);
> printf("%d\t%d\t%s\n", table[1].value, table[1].fn(table[1].value),
> table[1].mesg);
>
> Comme plusieurs fois signal�, soyez prudent avec les nommages. double
> doit �tre proscrit, et je n'aime pas trop Complex dans ce contexte.
Ok je comprends mieux merci. Mais je voulais savoir si il n'y a pas
moyen de le faire plut�t pour une fonction quelconque de type void?
En ce qui concerne le 'double' effectivement le nom est mal donn�, mais
il s'agissait juste d'exp�rimenter une fn dans uns structure....
--
Fr�d�ric
Technical Details
Message-ID:
<87wtkdg4ho.fsf@venus.net>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!proxad.net!fr.ip.ndsoftware.net!grolier!v.t-online.fr!t-online.fr!not-for-mailReferences:
<87r7amd6qx.fsf@venus.net> <mn.7ccf7d5a1b906ca4.31483@laposte.net>Show Full Headers
Complete Article Headers
X-Google-Thread: f9822,d00d98e8032f6fc X-Google-Attributes: gidf9822,public X-Google-Language: FRENCH,ASCII Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!proxad.net!fr.ip.ndsoftware.net!grolier!v.t-online.fr!t-online.fr!not-for-mail Newsgroups: fr.comp.lang.c Subject: Re: Insérer une fonctions dans une structure? References: <87r7amd6qx.fsf@venus.net> <mn.7ccf7d5a1b906ca4.31483@laposte.net> From: frederic@askme.fr Organization: F(x) X-Troll: Vi is better than Emacs Date: 16 Oct 2005 12:06:59 +0200 Message-ID: <87wtkdg4ho.fsf@venus.net> User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.4 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Lines: 49 NNTP-Posting-Date: 16 Oct 2005 10:06:30 GMT NNTP-Posting-Host: 213.44.195.188 X-Trace: 1129457190 news.club-internet.fr 459 213.44.195.188 X-Complaints-To: abuse@club-internet.fr