🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.lang.c
Article #15056

Re: Insérer une fonctions dans une structure?

#15056
From: frederic
Date: Sun, 16 Oct 2005 10:06
49 lines
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-mail
References: <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