Signification d'un warning [C]

Fermé
---vivi--- Messages postés 76 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 23 octobre 2009 - 13 mars 2009 à 17:10
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - 13 mars 2009 à 18:53
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.

4 réponses

Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
13 mars 2009 à 17:15
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
---vivi--- Messages postés 76 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 23 octobre 2009 11
13 mars 2009 à 17:25
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
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
13 mars 2009 à 17:28
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
---vivi--- Messages postés 76 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 23 octobre 2009 11
13 mars 2009 à 17:35
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
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
13 mars 2009 à 18:53
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