Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
531 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++/GP32] Problème de conversion invalide

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++/GP32] Problème de conversion invalide

n°555302
[Albator]
MDK un jour, MDK toujours !
Posté le 31-10-2003 à 11:16:57  profilanswer
 

Salut,
j'ai commencé à installer un environnement de dev sur mon Linux, pour pouvoir écrire et compiler des applications sur GP32.
J'ai installé la librairie SDL.
 
Mais évidemment, j'ai un problème sorti de l'espace ...
 
Mon code source contient tout au début: #include <stdio.h>
 
Le stdio.h concerné (livré avec sdl) contient entre autres: #include <gpwrap.h>
 
Et le gpwrap.h contient apparemment pas mal de fonctions écrites pour la GP32.
 
Je lance la compilation:
 

arm-thumb-elf-g++ -c -Wall -mcpu=arm9 -mthumb-interwork -msoft-float -O2 -g -o gpmain.o gpmain.cpp


 
Voici l'erreur que je me prends:
 

In file included from /home/albator/gp32dev/sdl/libc-wrap/stdio.h:4,  
from gpmain.cpp:7:  
/home/albator/gp32dev/sdl/libc-wrap/gpwrap.h: In function `char* strdup(const char*)':  
/home/albator/gp32dev/sdl/libc-wrap/gpwrap.h:173: invalid conversion from `void*' to `char*'


 
La fonction en question est:
 

Code :
  1. static inline char *strdup(const char *s)
  2. {
  3. char *ret=NULL;
  4. size_t l=strlen(s);
  5. if (s>0)
  6. {
  7. ret=calloc(l+16,1);
  8. strcpy(ret,s);
  9. }
  10. return ret;
  11. }


 
La ligne 173 étant celle avec le calloc.
 
Pourquoi suis-je le seul utilisateur de GP-SDL chez qui ça refuse de compiler ? Cela vient-il de la version du compilateur ? (gcc 3.2.2)
Comment résoudre ou contourner ce pb ?

mood
Publicité
Posté le 31-10-2003 à 11:16:57  profilanswer
 

n°555350
chrisbk
-
Posté le 31-10-2003 à 11:50:03  profilanswer
 

pkoi +16 ???
ben fais un cast :O
La visiblement c'est du code C compilé avec un compilo C++ (le C++ est moins laxiste sur les casts entre pointeur que le C)

n°555393
Kristoph
Posté le 31-10-2003 à 12:34:41  profilanswer
 

Il fait peur ce code ! strlen, ça marche si on lui passe un pointer NULL ? Et le +16 dans l'allocation est pas mal aussi :)
 
Conseil : tout réecrire proprement.

n°555477
[Albator]
MDK un jour, MDK toujours !
Posté le 31-10-2003 à 14:09:26  profilanswer
 

Je précise encore une fois que ça n'est pas MON code, ça provient de la lib SDL pour GP32, c'est pour ça que je préfèrerai éviter de le modifier ... C'est justement pour ne pas tout réécrire que j'utilise des librairies toutes faites :)
 
Faire un cast, ça revient bien à ça ?
 

Code :
  1. ret=(const char*)calloc(l+16,1);


 
Sinon oui, il est probable que ça ait été prévu pour utiliser en C, et pas en C++ ...
Quand au +16, j'ai aucune idée d'où il sort et à quoi il sert [:spamafote]


Message édité par [Albator] le 31-10-2003 à 14:11:11

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++/GP32] Problème de conversion invalide

 

Sujets relatifs
[Résolu]Probleme de traitement de chaine de caractereProbleme de taille avec ZipInputStream
problème con : recupérer une variable passée en paramètreProblème d'affichage d'états sous excel depuis access
[PHP-NEWB] Probleme de session avec hébergement lycosProblème lié à replace.
petit probleme de breakproblème avec la commande systeme(" ")
[RESOLU] [ou presque] Problème de taille de JPanelProbleme avec Jpanel
Plus de sujets relatifs à : [C++/GP32] Problème de conversion invalide


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR