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 :

incompatible types in assignment


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Par défaut incompatible types in assignment
    Bonjour ;
    De l'aide svp;
    j'ai une variable global
    extern struct s_test test [A][B]
    j'ai une fonction :

    fonction (){
    struct s_test *ptest;

    for (ptest = &test; ptest < &test[a][B]; ptest ++)
    {
    *******;
    }
    }
    Ou est mon erreur svp pour avoir ce type de warning

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Selon ton code (sans que je puisse comprendre ce que tu veux réellement faire), ptest est censé être un pointeur.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Par défaut
    oui ptest est un pointeur ;

    est ce que ce code serais plus correcte :

    fonction (){
    struct s_test *ptest;

    for (ptest = &test[a][B]; ptest < &test[a][B]; ptest ++)
    {
    *******;
    }
    }
    En faisant cette modification , je corrige le warning mais je ne sais pas pourquoi
    le but est de parcourir une liste

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Je ne vois aucun pointeur ici...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Par défaut
    J avais juste oublier l étoile mais le ptest est bien un pointeur ,alors vous pouvez m aidé ?

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Avec aussi peu de détails, on ne peut pas faire grand-chose.

    Poste ton code complet.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Par défaut
    le fichier header :
    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
     
    #define A 10
    #define B 20
    struct s_test1
    {
        struct	s_test1 *first;
        struct	s_test1 *last;
        struct s_test2
        {
            int a;
            int b;
            int c;
            int d;
            int e;
        } test2;
    };
    struct s_test
    {
        struct	s_test1 *first;
        struct	s_test1 *last;
    };
     
    extern struct s_test test[A][B];
    le fichier source :
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "header.h"
     
    void InitTable(int vrf)
    {
        register struct s_test *i;
     
        for (i = &test ; i < &test[A][B]; i++)
            i->first = i->last = (struct s_test1 *)i;
     
    }
     
    int main(int argc, char *argv[])
    {
      InitTable(0);
      system("PAUSE");	
      return 0;
    }
    L'erreur :
    9 C:\Dev-Cpp\pointeur\main.c [Warning] assignment from incompatible pointer type

  8. #8
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    - ptest est un pointeur sur struct s_test : type struct s_test *
    - &test est l'adresse (constante pointeur) d'un tableau 2D de struct s_test : type struct s_test (*)[A][B] . Les objets pointés ne sont pas du même type et les pointeurs sont de type différents

    Si tu veux initialiser ptest avec l'adresse du début de test, plus pécisément celle du premier élément du premier élément de test, tu dois avoir

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 176
    Par défaut
    Bonjour
    Je vous remercie ,j'ai compris l'origine de mon erreur .
    ça corrige mon problème.
    A la prochaine question

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/02/2010, 17h14
  2. [Pointeurs] Incompatible type of assignment
    Par Deallyra dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2009, 18h01
  3. Incompatible types in assignment
    Par Spinoza23 dans le forum Débuter
    Réponses: 4
    Dernier message: 11/06/2008, 09h40
  4. error: incompatible types in assignment
    Par panda31 dans le forum C
    Réponses: 2
    Dernier message: 13/06/2006, 10h46
  5. Réponses: 4
    Dernier message: 05/12/2005, 19h24

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