Assignment makes pointer from integer without a cast...

Assignment makes pointer from integer without a cast... - C - Programmation

Marsh Posté le 12-01-2008 à 00:40:31    

Bonjour à tous :)
 
Voila, je suis confronté à un petit problème lors d'un développement d'un jeu d'échecs en C :
 
Voici le code du programme principal (programme test) :

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "TADListeCasesEnnemies.h"
  4. #include "TADEchiquier.h"
  5. #include "TADCase.h"
  6. int main(argc,argv)
  7. {
  8. LST* listeEnnemie; /* Ici on déclare listeEnnemie comme étant un pointeur */
  9. ECQ** chess;
  10. Couleur color;
  11. listeEnnemie = LST_listeCasesEnnemies(chess,color);   /* ######## Ici l'erreur : Assignment makes pointer from integer without a cast ######### */
  12. }


 
Voici une partie de TADListeCasesEnnemie.h

Code :
  1. /**
  2. * \struct LST
  3. * \brief liste de cases  
  4. */
  5. typedef struct{
  6.   int nbCases;
  7.   CASE *tableauDeCases; /*       Ici on peut ne pas définir de taille si on malloc après ? ou faut faire CASE *tableauDeCases[16] ?        */
  8. }LST;


 
Le code de TADListeCasesEnnemies.c avec le créateur de la liste :
 

Code :
  1. LST* LST_listeCasesEnnemies(ECQ** chess,Couleur joueur){
  2.   Ligne l;
  3.   int i,nbCases, c;
  4.   COOR* coordTmp;
  5.   CASE* caseTmp;
  6.   LST* casesEnnemies;
  7.   casesEnnemies=(LST*)malloc(sizeof(LST));
  8.   casesEnnemies->tableauDeCases=(CASE*)malloc(16*sizeof(CASE));
  9.   fixerNbCasesEnnemies(casesEnnemies,0);
  10.   i=0;
  11.   for(l=0 ; l<=7 ; l++){           
  12.     for(c=0 ; c<=7 ; c++){       
  13.       coordTmp = COOR_creerCoordonnees(l,(Colonne)c);
  14.       caseTmp = CASE_creerCase(coordTmp);
  15.         if(CASE_estVide(caseTmp)==FAUX){
  16.       if(PIECE_obtenirCouleur(CASE_obtenirPiece(caseTmp))!=joueur){
  17.           fixerNbCasesEnnemies(casesEnnemies,LST_obtenirNbCasesEnnemies(casesEnnemies)+1);
  18.           casesEnnemies->tableauDeCases[i]=*caseTmp;
  19.           i++;
  20.       }
  21.         }
  22.     }
  23.   }
  24.   return casesEnnemies;  /*      Ici normalement on renvoie bien un LST* non ?      */
  25. }


 
Ce code me renvoie :

Code :
  1. testListe.c:11: attention : assignment makes pointer from integer without a cast


 
J'avoue ne plus rien comprendre, j'essaye des grands coups d'* et de & dans tous les sens (je ne suis pas un spécialiste des pointeurs  :pt1cable: ) et je commence à devenir fou  :bounce:  
Alors si quelqu'un avait un peu de temps pour m'aider à comprendre où est mon erreur ce serait super  :D  
 
Merci d'avance et bonne soirée  :)


Message édité par Mister_Pingouin76 le 12-01-2008 à 00:42:17
Reply

Marsh Posté le 12-01-2008 à 00:40:31   

Reply

Marsh Posté le 12-01-2008 à 00:48:31    

Déclare dans TADListeCasesEnnemie.h, tous les prototypes des fonctions qui permettent de manipuler ton type LST, dont LST_listeCasesEnnemies.
 
Par défaut pour un prototype de fonction non déclaré, le compilateur considère implicitement que la fonction renvoie int (héritage du C89).
 
Edit: arf, et compile tes programmes en -Wall. Vu la permissivité du C, ça t'évitera quelques fracassages de tête contre les murs.


Message édité par tpierron le 12-01-2008 à 00:49:46
Reply

Marsh Posté le 12-01-2008 à 01:01:47    

Merci pour ta réponse :)
 
Pour le TADListeCasesEnnemies.h tout les prototypes étaient déjà déclarés avec les bons types...
Et là où ma connerie dépasse les limites, je viens de trouver mon erreur (grâce au -Wall notamment :P ) :
LST_listeCasesEnnemies... le "s" manquait dans mon .h
 
Je vais mettre ça sur le compte de la fatigue, désolé d'avoir pourri le forum ^^
Merci en tout cas :)


---------------
Goldbarre [Gains:23€] | Eurobarre [Gains:18€]
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed