IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Besoin d'explications sur un bout de code


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 4
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Eh bien, pour un premier post, tu fais fort:
    - mauvais forum (je déplace vers C)
    - mauvais titre
    - pas de balises [code]
    Merci de lire les règles:
    http://club.developpez.com/regles/

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /******************************/
     void menu2_trt(pf)
    /******************************/
    void (*pf)(void);
    {
    ça compile :

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: Besoin d'explications sur un bout de code
    Citation Envoyé par zizitop
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: Besoin d'explications sur un bout de code
    Citation Envoyé par gege2061
    Bonjour,
    Citation Envoyé par zizitop
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /******************************/
     void menu2_trt(pf)
    /******************************/
    void (*pf)(void);
    {
    ça compile :
    C K&R (aka pré-ansi, mais à l'époque on ne le savait pas encore). T'étais pas né!

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 4
    Par défaut
    Merci pour vos réponses.
    Excuser moi Mr le modérateur LOL je n'avais pas lu les règles du jeu avant d'envoyer mon message je le serais pour la prochaine fois. méhaculpa !!!

    Vous avez tous a fait raison, ce programme date de quelques années, il est pas énormement documenté et encore moins commenté alors c'est pas toujours évident de si retrouver.
    J'aurais une autres petites question sur mon sujet.

    Donc ma fonction void menu2_trt(pf) reçois l'adresse d'une autres fonctions en paramètres, mais quel est l'interrêt ??
    N'est-il pas plus judicieux de faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /******************************/ 
     void menu2_trt(void) 
    /******************************/ 
    {
               pf();
    }
    et de déclarer le prototype de ma fonction plus haut du style
    Le résultat sera t'il le même ????

    Je pense qu'il y a une utilité à cette façon de faire mais je la saisie pas.

    Merci

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2004
    Messages : 66
    Par défaut
    L'intêret est que tu peux appeler ta fonction de menu plusieurs fois et avec des fonctions différentes à chaque appel.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 4
    Par défaut
    Sa y est j'ai compris !!!!!!!! 8)

    Merci beaucoup à tous pour vos réponse rapide et claire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Explication sur un bout de code
    Par mitsukk1992 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 21/01/2015, 15h07
  2. besoin d'explication sur un code
    Par joelulrich dans le forum Débuter
    Réponses: 5
    Dernier message: 06/11/2010, 18h44
  3. Besoin d'explications sur un code
    Par poustiquette dans le forum Langage
    Réponses: 3
    Dernier message: 20/09/2008, 20h04
  4. explication sur un bout de code
    Par poporiding dans le forum C++
    Réponses: 2
    Dernier message: 27/06/2006, 18h04
  5. besoin d'explications sur un code
    Par NAHIAG dans le forum C
    Réponses: 8
    Dernier message: 28/05/2006, 12h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo