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 :

Passage de structure en paramètre


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Par défaut Passage de structure en paramètre
    Bonjour,

    Je veux effectuer la chose suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void fct1(struct TATA *pTata){
    ...
    ...
     fct2(pTATA);  //erreur ici
    ..
    ..
     
    }
     
    char fct2(struct TATA pTata){
      return (char)(pTata.x);
    }
    Moi je pensais que c'etait possible mais vu que le compilo me jette avec "Error 2 : <function argument>: implicit cast of pointer to non-equal pointer", je ne dois pas faire comme il faut.
    S'il quelqu'un peut m'expliquer cela serait super. Merci d'avance.

    Pegase.90

  2. #2
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Citation Envoyé par pegase.90
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void fct1(struct TATA *pTata){
    ...
    ...
     fct2(*pTATA);  //erreur ici
    ..
    ..
    
    }
    
    void fct2(struct TATA pTata){
      return (pTata.x);
    }
    EDIT: Un petit problème, non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void fct2(struct TATA pTata){
      return (pTata.x);
    }

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void fct1(struct TATA *pTata){
    ...
    ...
     fct2(*pTATA);  //erreur ici
    ..
    ..
     
    }
     
    void fct2(struct TATA pTata){
      return (pTata.x);
    }
    Oui j'ai également pensé à ca mais la j'obtient le message d'erreur suivant :"Error 2 : <function argument>: illegal cast of 'struct' to pointer".

    Pegase.90

  4. #4
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Citation Envoyé par pegase.90
    Oui j'ai également pensé à ca mais la j'obtient le message d'erreur suivant :"Error 2 : <function argument>: illegal cast of 'struct' to pointer".
    Le problème ne vient pas du code posté. Faites voir votre appel à fct1().

  5. #5
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Par défaut
    Citation Envoyé par stephl
    Le problème ne vient pas du code posté. Faites voir votre appel à fct1().
    Voici comment j'appelle ma fonction fct1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int main(void){
    struct TATA pTata;
    ...
     fct1(&pTata);
    ..
    return(1);
    }
    La stucture est défini dans un *.h que j'appele dans le fichier main.c.

  6. #6
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    L'appel est correct. Pourriez-vous donner la ligne indiquée par le compilateur lorsqu'il signale: "Error 2 : <function argument>: illegal cast of 'struct' to pointer"?

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    C'est normal que ça te jette :

    Dans fct1 pTata est un POINTEUR sur TATA
    dans fct2 tu attends la structure....

    Pourquoi faire compliqué quand on peut faire simple ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void fct1(struct TATA *pTata){
    char c ;
    ...
    ...
     c = fct2(pTATA);
    ..
     
    }
     
    char fct2(struct TATA *pTata){
      return (char)(pTata->x);
    }

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/03/2014, 23h10
  2. Réponses: 4
    Dernier message: 08/11/2012, 15h11
  3. Passage de structure en paramètre
    Par jojodu31 dans le forum Débuter
    Réponses: 6
    Dernier message: 24/04/2008, 16h41
  4. Passage d'une structure en paramètre
    Par NeraOne dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/05/2007, 18h16
  5. Réponses: 2
    Dernier message: 15/09/2004, 18h17

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