Signification d'un warning [C]

---vivi--- Messages postés 83 Statut Membre -  
Nabla's Messages postés 18201 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, je voudrais savoir ce que signifie ce warning ci :main.c|107|warning: assignment makes integer from pointer without a cast|
je n'arrive pas à bien le traduire.
Merci d'avance.
Configuration: Windows XP
Firefox 3.0.7

4 réponses

  1. Nabla's Messages postés 18201 Date d'inscription   Statut Contributeur Dernière intervention   3 228
     
    ca veut dire que sur la ligne 107, tu as oublié une * pour acceder a un pointeur

    -> tu vas lire l'adresse mémoire, au lieu de lire le contenu de l'adresse .... voila

    assignment makes integer from pointer without a cast : l'assignement de la valeur crée un entier depuis un pointeur, mais vous n'avez pas precisé explicitement que vous etiez conscient de ce que vous faites....

    donc, si c'est bien l'adresse que tu veux, et pas son contenu (je pense pas, mais je te dis comment faire disparaitre le warning): rajoute un (int) devant la variable qui est a droite de la parenthere

    sinon, ajoutes un * a droite de la parenthèse

    copies la ligne 107 ici
    0
  2. ---vivi--- Messages postés 83 Statut Membre 11
     
    Merci, voici la ligne 107 : carte[i][j] = ecran;
    et voici la déclaration de la variable: int carte[NB_BLOCS_LARGEUR][NB_BLOCS_HAUTEUR] = {};
    NB_BLOCS_LARGEUR et NB_BLOCS_HAUTEUR sont des defines
    0
    1. Nabla's Messages postés 18201 Date d'inscription   Statut Contributeur Dernière intervention   3 228
       
      donc, carte[][] est de type int, il enregistre des entiers....

      vas voir la déclaration de ecran.. je suis sur qu'il est pas entier, mais que c'est un pointeur (il y a un * dans la déclaration).

      peux tu mettre la déclaration de ecran ?
      0
  3. ---vivi--- Messages postés 83 Statut Membre 11
     
    oui en effet ecran est un pointeur (j'utilise la SDL) je te met sa déclaration: SDL_Surface *ecran = NULL;
    voici le prototype (car carte est dans une autre fonction que ecran): void jouer (SDL_Surface *ecran);
    est ce qu'un warning comme celui la peut faire planter mon programme?
    0
  4. Nabla's Messages postés 18201 Date d'inscription   Statut Contributeur Dernière intervention   3 228
     
    ben non, ca fera pas planter sur cette ligne, mais pourquoi tu enregistres cette adresse? dans un tableau en plus ? ca ne servira a rien, et quand tu essayera d'utiliser cette valeur, la : soit tu aura des données qui ne voudrons rien dire, soit ca plantera
    0