1

J'ai lu dans un bouquin que l'on pouvait pointer vers une fonction

seulement tous mes essais se sont révélés mauvais : soit ça se compile et la fonction ne s'éxecute pas, soit ça ne se compile même pas

g des fonctions de type void fct(void){...}
et je souhaite les stocker ds un tableau void tbl[x]

comment dois-je m'y prendre pour les stocker puis comment y faire appel à partir du tableau ? smile
*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

2

fait d'abord une définition du type de ta fonction - avec tous les paramètres - comme une variable.

Ensuite, tu définis une variable pointeur vers la fonction, pointeur que tu assignes dans ton progamme au pointeur vers une fonction bien connue...
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

3

euh t'as pas un exemple de code ? smile
*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

4

u de pointeurs sur des fonctions doit être déclaré comme ça :void (*tab_ptr_fn[10])(short,short);Je crois que normalement, ton tableaet tu le remplis de fonctions qui ont ce prototype :
void fonction(short x,short y); ou ptr_tab_fn[2]=&fonction;par exemple, tu peux dire : tab_ptr_fn[2]=fonction; //n[4](2,3); // ou (*ptr_tab_fn)[4](2,3);et tu appelles une fonction comme ça : ptr_tab_f

5

v essayer ça merci smile
*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

6

jackiechan a écrit :
u de pointeurs sur des fonctions doit être déclaré comme ça :void (*tab_ptr_fn[10])(short,short);Je crois que normalement, ton tableaet tu le remplis de fonctions qui ont ce prototype :
void fonction(short x,short y); ou ptr_tab_fn[2]=&fonction;par exemple, tu peux dire : tab_ptr_fn[2]=fonction; //n[4](2,3); // ou (*ptr_tab_fn)[4](2,3);et tu appelles une fonction comme ça : ptr_tab_f


De manière normalisée, c'est plutôt :
void (*tab_ptr_fn(short x,short y))[10];

Je ne sais pas pour les parenthèses, essaie, tu verras lequel marche...
Ou tu fais un typedef pour renommer "void tab_ptr_fn(short x,short y)" en chosetruc et là, c'est comme pour tout tableau...
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

7

OUUUUUUUUUUUUUUUUUUUUUUUUééééééééééééééééééééééééééé !!!!!!!!!!!

ça marche !!!!!!!!

kirby va voir son code très grandement alléger maintenant love

merci smile
*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

8

Je viens de tester et effectivement, la déclaration de Miles ne passe pas dans TI-GCC.
oid (*test[2])(void);Fais comme j'ai dit :v

9

Ouais, j'ai jamais essayé ce genre de truc...

Mais essaie, dans la déclaration de mettre (short x,short y), c'est mieux... - du point de vue esthétique -
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

10

si g pas d'arguments je v pas en rajouter pour te faire plaisir ...
*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

11

par rapport à l'exemple de jackie roll
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

12

arf ok grin
*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

13

Vark : je crois deviner que tu utilises la programmation événementielle rendue possible par GraphX ?
smile
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

14

euh ... non pkoi ? grin
y'a ça ds la version que tu m'a envoyée ?
*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

15

en plus c inexploitable pour cette raison :
La fonction function est appelée uniquement au moment de l'appui d'une touche. L'utilisateur doit relâcher toutes les touches
pour qu'une nouvelle pression déclenche l'appel de la fonction function.
*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

16

Oui, c'est assez dit dans la doc...

Je t'ai filé une nouvelle version, et tu n'as même pas consulté la liste des changements dans le ReadMe ?
File le faire !!!

Pourtant il me semble que tu étais au courant des timers et des événements clavier hum
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

17

ça y est mé c pas exploitable tongue

je v me faire ma propre programmation événementielle tongue
*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

18

#14 : c'est pour une question de vitesse. Et puis c'est exploitable dans certains cas, il y a quelqu'un à qui ça a rendu service.

Il reste les timers. Ne me dis pas que tu n'étais pas au courant tongue
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

19

au fait, y'a pas quelqu'un qui saurait comment se rapprocher au max de l'approche objet en C ?
(avec les pointeurs de fonction, c un peu possible, mais comment modifier ce qu'en C++ on appelle données membres ?)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

20

tes timers ils vont me servir t'inquiète
*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

21

Comment tu comptes faire pour ta propre gestion événementielle ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

22

je c po

de toutes façons mon but c de simplifier mon fichier controls.h
c lourd, foireux et illisible
*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

23

Ce que tu veux, c'est que la fonction clavier soit appellée régulièrement tant qu'une touche est pressée ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

24

nan laisse fo que je le fasse moi-même

mon système est tellement tordu que ton truc général s'y appliquera pas
*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & sabrina

25

OK triso
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

26

squale92 a écrit :
au fait, y'a pas quelqu'un qui saurait comment se rapprocher au max de l'approche objet en C ? (avec les pointeurs de fonction, c un peu possible, mais comment modifier ce qu'en C++ on appelle données membres ?)

Tu fais ce que le C++ fait en interne:
void toto::func(int x)
devient:
void toto_func(struct toto *this, int x)
à appeler:
toto_func(&toto1, 1234);

(Si tu programmes en _nostub, tu peux mettre toto__func. En mode kernel, Obj2Ti ne va pas aimer les __ parce que c'est réservé pour les appels de librairies dynamiques.)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

27

OK. merci.
donc, je suis obligé de passer un pointeur vers la structure en elle-même sad


et si je veux appeler mes fonctions en ma_var.func(a, b);
je dois déclarer dans ma struct :
typedef struct
{
int(*)(ma_func)(int a, int b);
int c;
}TYPE;

en ensuite :
int type_func(int a, int b)
{
return a+b;
}


en pr initialiser la var :
TYPE ma_ = {&type_func, 10);

enfin, j'appelle comme ça :
ma_.func(10, 20);

?


(bon, c pas clair du tout, et c blindé de fautes. faudrait que je retrouve le prog que j'avais commencé à écrire là dessus, ça serait plus simple. verra ce weeke-dn (il est pas à Lyon), ou alors, je ferai qqc qd j'aurai le temps, sous Visual C++ en C)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

28

C'est ça.
D'ailleurs, quelque part sur le site de GTK+, il y a un préprocesseur qui permet de convertir du code objet en C rapidement (prévu pour l'usage avec GTK+). Je pense qu'il peut faire ces transformations automatiquement (mais je n'ai jamais essayé).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

29

tiens, ça serait pas mal ça.
chercherait ce midi ce site smile
(là, je v avoir cours sad)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

30

d'ailleurs, y'a visiblement un gars qui a eu cette idée aussi :
je n'ai regardé que très briévement, mais ça m'a l'air de ressembler :
http://www.ticalc.org/archives/files/fileinfo/251/25159.html
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall