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 :

adresse d'une fonction avec parametre dans une structure


Sujet :

C

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut adresse d'une fonction avec parametre dans une structure
    Bonjour,
    Je voudrasi savoir comment on utilise une fonction dans une structure via son adresse/ Mais j'aimerais que cette fonction ait des paramètres. Je vous donne l'exemple suivant et j'aimerai savoir s'il est bon


    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
    void fun(void)(bool *passage) {
        printf("In function\n");
        *passage=TRUE;
    }
     
    struct with_fct {
        void (*f)(void)(bool *passage);
        int autre;
    };
     
    int main() {
        bool ok=FALSE;
        struct with_fct str;
     
        str.f = fun;
     
        mon_toto.f(&ok);
        if (ok) {
          printf("After function\n");
          return 0;
        } else {
          return -1;
        }
    }
    Est ce que mon code est correct, sinon je voudrais savoir quelle modification j'ai à appporter pour qu'il soit bon

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    2 erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /* cela n'a pas de sens, je l'ai corrigé */
    void (*f)(void)(bool *passage);
     
    /* tu déclare str et tu utilise mon_toto :-) */
        struct with_fct str;
        str.f = fun;
         mon_toto.f(&ok);
    Voici comment je ferai

    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
     
    /* declaration du type de fonction */
    /* le type ma_function_t est un pointeur de fonction retournant void et demandant l'adresse d'un booleen en parametre */
    typedef void (*ma_function_t)(bool *passage);
     
    /* declaration de ma structure */
    struct with_fct 
    {
        ma_function_t f;
        int autre;
    };
     
    void fun(bool *passage)
    {
        printf("In function\n");
        *passage=TRUE;
    }
     
    int main()
    {
        bool ok=FALSE;
        struct with_fct str;
     
        str.f = fun;
        str.f(&ok);
     
        if (ok) {
          printf("After function\n");
          return 0;
        } else {
          return -1;
        }
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/06/2012, 14h22
  2. Objet existant reconnu dans une fonction mais pas dans une autre
    Par Jiyuu dans le forum Général Python
    Réponses: 0
    Dernier message: 20/09/2011, 18h19
  3. recuperer une fonction avec arguments dans une dll
    Par freuh94 dans le forum Windows
    Réponses: 3
    Dernier message: 03/10/2009, 11h45
  4. [Dojo] Objet Dojo créé dans une fonction et utilisé dans une autre.
    Par hapalemur dans le forum Bibliothèques & Frameworks
    Réponses: 10
    Dernier message: 05/06/2009, 13h59
  5. passage d'une fonction en parametre d'une fonction
    Par psylox dans le forum Langage
    Réponses: 5
    Dernier message: 06/10/2008, 16h40

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