Besoin d'explications sur un bout de code
Salut à tous,
Je dois modifier un programme embarqué dans un appareil médical développez en C pour un microcontroleur de la famille 8051 (le 80C537).
Tous va bien jusqu'a la fonction suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| /******************************/
void menu2_trt(pf)
/******************************/
void (*pf)(void);
{
T8b c;
read_prm(Ntrt);
aff_page(Ttrt2,Ftrt2);
maj_titre();
while (1)
{
c = getch();
switch (c)
{
case T_Cor:
// ici tous va bien
case T_M:
trans_prm();
(*pf)();
rs_1(0xFF);
rs_1('F');
rs_1('I');
rs_1('N');
rs_1(0xFF);
return;
case T_A:
// ici tous va bien
case T_Av:
// ici tous va bien
default:
// ici tous va bien
}
}
} |
En gros cette fonction affiche un menu sur mon écran LCD et ensuite réagis en fonction de la touche appuyée sur le clavier de l'appareil.
Je bloque sur les deux lignes suivantes :
void (*pf)(void); et (*pf)();
Merci de votre aide
Re: Besoin d'explications sur un bout de code
Bonjour,
Citation:
Envoyé par zizitop
void (*pf)(void); et (*pf)();
Ceci correpond à un pointeur de fonction.
Citation:
Envoyé par zizitop
Code:
1 2 3 4 5
| /******************************/
void menu2_trt(pf)
/******************************/
void (*pf)(void);
{ |
8O ça compile :?:
Re: Besoin d'explications sur un bout de code
Citation:
Envoyé par zizitop
Code:
1 2 3 4 5 6 7 8
|
/******************************/
void menu2_trt(pf)
/******************************/
void (*pf)(void);
{
<...>
(*pf)(); |
Ouch! Du vieux C d'avant 1989! . Maintenant, on écrit:
Code:
1 2 3 4 5
|
void menu2_trt(void (*pf)(void))
{
<...>
pf(); |
Pas de grand mystère. La fonction reçoit l'adresse d'une fonction et exécute celle-ci quand elle le doit.
http://emmanuel-delahaye.developpez.....htm#pointeurs
Re: Besoin d'explications sur un bout de code
Citation:
Envoyé par gege2061
Bonjour,
Citation:
Envoyé par zizitop
Code:
1 2 3 4 5
| /******************************/
void menu2_trt(pf)
/******************************/
void (*pf)(void);
{ |
8O ça compile :?:
C K&R (aka pré-ansi, mais à l'époque on ne le savait pas encore). T'étais pas né! :lol: