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 :

typedef de pointeur de fonction non défini


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Par défaut typedef de pointeur de fonction non défini
    Bonjour,
    Dans un .h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef void    (*write_b)(void *,u_char *,u_long,u_long);
    Donc c'est un pointeur de fonction (write_b) avec 3 paramètres.
    Plus loin dans ce mêm .h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef struct
            {
               /* 
              procedures et variables diverses
              ...
              */   
               write_b  write_bytes;            /* procedure d'écriture 8 bits */
            }
            t_target;
    Donc c'est uns structure avec un champ write_bytes de type write_b. Donc un pointeur sur une fonction.
    Je ne maîtrise pas trop les pointeurs de fonctions mais de ce que j'ai vu il faut l'initialiser avec l'adresse d'une fonction. Et les seules possibles initialisations que j'ai trouvé sont du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (p_space->write_bytes)(p_space,(u_char *)buffer,((p_block->adbloc)+offset),nbelts);
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p_space un pointeur sur t_target
    Là, ça se complique. Il me semblerait que ce soit un pointeur de fonction mais je demande de l'aide.
    Je ne peux pas tout détailler parceque ça s'imbrique dans tous les sens. Mais j'aimerais comprendre sur quoi pointe write_bytes.
    Merci

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Le troisième bloc de code que tu as posé n'est pas une initialisation, c'est une utilisation.
    Le pointeur write_bytes est initialisé ailleurs.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Par défaut
    1) A propos de l'utilisation : la structure du 3ème bloc peut-elle être vue comme : "maFonction (mesParametres)" avec des paranthèses autour de maFonction ?
    2) Mon 3ème bloc est dans une fonction avec p_space en paramètre.
    p_space est initialisé comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p_space = &(hCAS->CDi_Chan[Channel_Number].CH_v_mem);
    CH_v_mem est de type t_target.
    Donc l'initialisation serait là.
    L'appel du 3ème bloc appelerait donc CH_v_mem ?
    3) Sans rapport direct avec mon problème, j'ai ce code très bizarre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var = TRUE;
    {
    // code quelconque
    }
    Peut-on vraiment ouvrir des paranthèses après un ";" de cette manière ?

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    1. Si j'ai bien compris ce que tu dis, je pense que oui.
    2. Si j'ai bien compris, l'appel appelle la fonction pointée par un membre de CH_v_mem et lui passe l'adresse de CH_v_mem en premier argument. Mais on n'a toujours pas vu l'initialisation du pointeur de fonction.
    3. Oui, tu peux mettre un bloc d'instructions entre deux instructions sans problème. C'est utile quand on aime réduire la portée des variables.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/11/2006, 06h42
  2. [Wamp] Appel de fonction non défini
    Par morphine63 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 29/10/2006, 10h02
  3. Fonction non définie (alors qu'elle l'est) - Cocher toutes les cases
    Par navis84 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 22/09/2006, 12h02
  4. Réponses: 2
    Dernier message: 01/06/2006, 14h54
  5. fonction non définie
    Par ston dans le forum Access
    Réponses: 11
    Dernier message: 12/12/2005, 16h02

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