Signification d'un warning [C]

---vivi--- Messages postés 76 Date d'inscription   Statut Membre Dernière intervention   -  
Nabla's Messages postés 18203 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.

4 réponses

Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
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   Statut Membre Dernière intervention   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
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
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   Statut Membre Dernière intervention   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
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
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