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

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

Marsh Posté le 31-10-2003 à 11:16:57    

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 ?

Reply

Marsh Posté le 31-10-2003 à 11:16:57   

Reply

Marsh Posté le 31-10-2003 à 11:50:03    

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)

Reply

Marsh Posté le 31-10-2003 à 12:34:41    

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.

Reply

Marsh Posté le 31-10-2003 à 14:09:26    

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
Reply

Sujets relatifs:

Leave a Replay

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