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 :

Prototype pointeur de fonction


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Par défaut Prototype pointeur de fonction
    Bonjour,

    Je reçois en paramètre d'une fonction un pointeur de fonction à paramètres variables, j'ai cette entête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    short int func(int nb, int (f*)(int, ...)) {
    ...
    }
    Quel est du coup le prototype que je dois mettre dans mon .h ?

    Merci d'avance.

    Edit : Je crois penser que trouver comment s'écrit le type de f pourrait répondre à ma question ? Merci.

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Une fonction avec une telle déclaration ne compile pas chez moi. Je l'ai modifiée ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    short int func(int nb, int (*f)(int, ...) )
    {
        puts("NOP");
    }
    Si tu as la déclaration de la fonction, tu as son prototype à mettre dans ton fichier d'en-tête, non ?

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef int(*myOwnPtrFct)(int,...);
    short int func(int nb, myOwnPtrFct* fct )
    {
       (*fct)(...);
    }
    edit:
    ou bien tu parles de mettre le prototype de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    short int func(int nb, int (*f)(int, ...)) {
    ...
    }
    dans le header ?
    Auquel cas c'est juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    short int func(int nb, int (*f)(int, ...));
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Par défaut
    Oui pardon j'ai mis (f*) mais j'ai bien (*f) dans ma source. Pour le prototype il n'est pas gênant de laisser les noms de variable nb et f ?

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Dans un prototype, tu peux laisser le nom des variables mais les types suivants. Il me semble aussi que les noms peuvent être différents de ceux de la définition (pas les types, bien entendu).

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Le nom de variable dans un prototype est optionnel.
    Donc son nom importe peu, qu'il diffère dans l'implémentation aussi.
    Le prototype est là pour indiquer comment utiliser la fonction,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    short int func(int , int (*)(int, ...));
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Par défaut
    Merci de vos précisions.

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

Discussions similaires

  1. pointeurs constants et prototype de ma fonction
    Par salseropom dans le forum C
    Réponses: 3
    Dernier message: 23/05/2006, 18h03
  2. Declaration de fonction retournant un pointeur sur fonction
    Par pseudokifaitladifférence dans le forum C
    Réponses: 5
    Dernier message: 11/08/2003, 19h37
  3. Matrice de pointeurs de fonctions
    Par sebduth dans le forum C
    Réponses: 15
    Dernier message: 18/07/2003, 14h03
  4. [Kylix] Pointeur de fonctions
    Par _dack_ dans le forum EDI
    Réponses: 1
    Dernier message: 03/07/2003, 10h17
  5. pointeur de fonction
    Par kardath dans le forum C
    Réponses: 4
    Dernier message: 28/12/2002, 14h39

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