CPC Rulez
https://cpcrulez.fr/forum/

Un p'tit coup de main ?
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=5602
Page 1 sur 1

Auteur :  zecreator [ 02 Oct 2015, 10:55 ]
Sujet du message :  Un p'tit coup de main ?

Bonjour,

Pour apprendre le langage C, mais je me suis lancé dans un petit projet CPC. J'ai revu l'utilisation de mes pointers, mais depuis SDCC ne compile plus mon code C.

J'ai une erreur de type : "Indirections to differents types assignments from type 'const-char' to type 'unsigned char'.

Bon, je comprend que je dois utiliser un mauvais type de variables à un moment, mais je n'arrive pas à voir où. Je pense à un problème de pointers. Je suis débutant en pointers.

Je vous donne mes sources ici.
http://www.freetalent.fr/downloads/mabool.zip

Merci par avance.

Auteur :  Lone [ 02 Oct 2015, 13:01 ]
Sujet du message :  Re: Un p'tit coup de main ?

Salut,

Je galère à récupérer ton zip, mais ton problème ne semble pas lié à des pointers (pas directement en tout cas), mais plutôt a un cast.
Il est en effet normal de ne pas pouvoir utiliser tel quel un "const char" en "unisgned char" : Le const indique que ce char est en lecture seule, attribut qu'il perd lorsque l'on l'utilise comme un "unsigned char". Il faut donc, au minimum, le caster en "unsigned char" (en étant bien sûr de ce que l'on veut faire ! A priori, cette erreur n'est pas là par hasard !)

Sinon, ton erreur apparais à quelle ligne ?

Auteur :  zecreator [ 02 Oct 2015, 13:35 ]
Sujet du message :  Re: Un p'tit coup de main ?

Lone a écrit :
Salut,

Je galère à récupérer ton zip, mais ton problème ne semble pas lié à des pointers (pas directement en tout cas), mais plutôt a un cast.
Il est en effet normal de ne pas pouvoir utiliser tel quel un "const char" en "unisgned char" : Le const indique que ce char est en lecture seule, attribut qu'il perd lorsque l'on l'utilise comme un "unsigned char". Il faut donc, au minimum, le caster en "unsigned char" (en étant bien sûr de ce que l'on veut faire ! A priori, cette erreur n'est pas là par hasard !)

Sinon, ton erreur apparais à quelle ligne ?


La console m'indique une erreur à la ligne 111 de mabool.c. Soit la dernière ligne du script qui est un commentaire.
Image
Merci.

Auteur :  Gerald [ 02 Oct 2015, 14:49 ]
Sujet du message :  Re: Un p'tit coup de main ?

zecreator a écrit :
Lone a écrit :
Salut,

Je galère à récupérer ton zip, mais ton problème ne semble pas lié à des pointers (pas directement en tout cas), mais plutôt a un cast.
Il est en effet normal de ne pas pouvoir utiliser tel quel un "const char" en "unisgned char" : Le const indique que ce char est en lecture seule, attribut qu'il perd lorsque l'on l'utilise comme un "unsigned char". Il faut donc, au minimum, le caster en "unsigned char" (en étant bien sûr de ce que l'on veut faire ! A priori, cette erreur n'est pas là par hasard !)

Sinon, ton erreur apparais à quelle ligne ?


La console m'indique une erreur à la ligne 111 de mabool.c. Soit la dernière ligne du script qui est un commentaire.
Image
Merci.
Tu utilise quelle version de SDCC ?
En compilant mabool.c (sdcc -mz80 -c mabool.c -o mabool.rel) les premières erreurs sont dans inc/misc/levels.h.
Tu y déclares un tableau de unsigned char a une dimension que tu initialises comme un tableau a deux dimensions.

Auteur :  zecreator [ 02 Oct 2015, 15:17 ]
Sujet du message :  Re: Un p'tit coup de main ?

Gerald a écrit :
zecreator a écrit :
Lone a écrit :
Salut,

Je galère à récupérer ton zip, mais ton problème ne semble pas lié à des pointers (pas directement en tout cas), mais plutôt a un cast.
Il est en effet normal de ne pas pouvoir utiliser tel quel un "const char" en "unisgned char" : Le const indique que ce char est en lecture seule, attribut qu'il perd lorsque l'on l'utilise comme un "unsigned char". Il faut donc, au minimum, le caster en "unsigned char" (en étant bien sûr de ce que l'on veut faire ! A priori, cette erreur n'est pas là par hasard !)

Sinon, ton erreur apparais à quelle ligne ?


La console m'indique une erreur à la ligne 111 de mabool.c. Soit la dernière ligne du script qui est un commentaire.
Image
Merci.
Tu utilise quelle version de SDCC ?
En compilant mabool.c (sdcc -mz80 -c mabool.c -o mabool.rel) les premières erreurs sont dans inc/misc/levels.h.
Tu y déclares un tableau de unsigned char a une dimension que tu initialises comme un tableau a deux dimensions.


Bonjour,

La version de SDCC utilisée ets la 3.1.0.

Auteur :  demoniakparadox [ 02 Oct 2015, 16:13 ]
Sujet du message :  Re: Un p'tit coup de main ?

Pour ma part je pense que le problème vient des instructions LoadFile, déclarée comme ça :
Code :
int LoadFile(char* filename, char* readbuffer)
dans le fichier accessfile.h, et auquel tu passes un const char[] (global.h), qui est différent du char *

Le plus simple serait de définir Player, Music, Datas et Data2 en char * je pense, du style :
Code :
char * Player = "PLAYER.BIN";
char * Music = "MUSIC.BIN";
char * Datas = "DATA.BIN";
char * Data2 = "DATA2.BIN";

Auteur :  TotO [ 03 Oct 2015, 09:23 ]
Sujet du message :  Re: Un p'tit coup de main ?

Dans global.h tu as :
Code :
const char Player[11] = {'P','L','A','Y','E','R','.','B','I','N',0};
const char Music[10] = {'M','U','S','I','C','.','B','I','N',0};
const char Datas[9] = {'D','A','T','A','.','B','I','N',0};
const char Data2[10] = {'D','A','T','A','2','.','B','I','N',0};

Tu peux aussi définir tes chaines de cette façon :
Code :
char Player[] = "PLAYER.BIN";
char Music[] = "MUSIC.BIN";
char Data[] = "DATA.BIN";
char Data2[] = "DATA2.BIN";

Ainsi, tu n'auras plus le soucis de type en passage de paramètre pour LoadFile().
Si tu veux absolument les déclarer en const, il faut soit modifier la fonction soit caster le type.
LoadFile((char*)filename, ...)

PS: Data ne prends pas de s, c'est déjà un pluriel... ;)

Auteur :  zecreator [ 05 Oct 2015, 20:30 ]
Sujet du message :  Re: Un p'tit coup de main ?

Merci pour vos réponses.

En corrigeant dans le fichier levels.h la ligne :

Code :
char unsigned levels[] = {


par

Code :
char unsigned * levels = {


ça compile. Bon, en faisant un RUN"MABOOL, ça reboot le CPC... Mais, c'est déjà un début...

Merci.

AJOUTER :
Voici un nouveau problème :
Image

J'ai mis à jour le fichier ZIP avec mes modifications de sources :
http://www.freetalent.fr/downloads/mabool.zip

Merci.

Auteur :  kdragin [ 22 Déc 2015, 07:15 ]
Sujet du message :  Re: Un p'tit coup de main ?

Merci pour la partage des informations.

Page 1 sur 1 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/