Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » [Aide SDK] Les erreurs de compilation
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

[Aide SDK] Les erreurs de compilation

Posté le 15/05/2011 00:10

Suite aux nombreuses demande d'aide que je reçois concernant des messages d'erreur lors de compilation avec le SDK, je décide de créer ce topic qui aura pour but de recenser tous les messages d'erreur, de les expliquer, et de donner leur solution.

Premièrement, qu'est ce qu'une erreur de compilation ?

Ici, ce sont les 4 lignes qui commencent par le chemin de mon fichier source contenant les erreurs (Z:\home\pierre\a\a.c) suivi du numéro de la ligne contenant l'erreur.

Liste des erreurs

Illegal token ''<mot>''
Description : Une erreur de syntaxe a été rencontrée avant <mot> (un point virgule manquant, une parenthèse en trop ...)
Solution : Arrêter de coder avec les pieds.

Undeclared name ''<nom>''
Description : Une variable est utilisée sans avoir été déclarée au préalable.
Solution : Déclarer la variable au début de la fonction.

Cannot convert parameter ''X''
Description : Le paramètre n°X envoyé à la fonction n'est pas du bon type, et ne peut pas être converti.
Solution : Vérifier quel type de variable demande la fonction, et lui envoyer une variable du bon type.

Illegal initializer type
Description : Une variable est initialisée avec un type incorrecte (exemple, un entier initialisé avec une chaîne de caractère)
Solution : Initialiser la variable avec une valeur CONSTANTE correcte.
Le compilateur Renesas utilisé par le SDK respecte la norme C89, qui spécifie qu'une variable doit être initialisée avec une valeur constante, et non une valeur de retour de fonction, ou un paramètre de la fonction.

Multiple variable declarations
Description : Une variable a déjà le même nom et la même portée que celle déclarée à la ligne de l'erreur.
(Deux variables peuvent avoir le même nom si elles n'ont pas la même portée)
Solution : Nommer la variable différemment.

Type not compatible for ''=''
Description : L'affectation d'une valeur à une variable a échouée car la valeur n'est pas d'un type compatible avec celui de la variable.
Solution : Si la valeur affectée est un retour de fonction, vérifier quel type de variable retourne la fonction.

Modifiable lvalue required for ''=''
Description : Un élément non modifiable (comme une fonction où une constante) est suivi d'un signe égal.
Solution : Seule les variables peuvent se voir affecter une valeur avec ''=''.

Index not integer
Description : utilisation d'un float ou d'un double dans l'index d'une case de tableau.
Solution : Caster en int, tableau[double] devient tableau[(int)double]

Number of parameters mismatch
Description : Trop ou pas assez de paramètres sont envoyés à la fonction.
Solution : Regarder ce que demande la fonction, et le respecter.

Undefined external symbol ''_<nom de fonction>''
Description : Une fonction est appelée, mais son implémentation n'a pas été compilée.
Solution : Vérifier l'orthographe du nom, vérifier si le fichier contenant la fonction est bien dans la fenêtre ''Files in project''. Si tout ça est bon, essayez d'éditer le fichier contenant l'implémentation de la fonction (ajouter un espace, le supprimer, sauvegarder), ça permettra au compilateur de re-compiler le fichier.

couldn't open ''<nom de fichier>''
Description : Un fichier inclu avec #include n'existe pas.
Solution : Lors de l'inclusion d'un fichier, il faut donner son chemin relatif depuis le fichier contenant la directive #include

Empty source program
Description : Le fichier source est vide, et aucun compilateur n'aime ça.

Cannot open source file ''<nom de fichier>''
Description : Le fichier source présent dans la fenêtre ''Files in project'' du SDK n'existe pas.

Unrecognized preprocessing directive
Description : Une directive de préprocesseur (lignes commençant pas #) n'est pas correctement orthographiée.

Illegal preprocessor syntax
Description : Erreur de syntaxe dans une directive de préprocesseur.

Expected a file name
Description : Un nom de fichier est attendu (généralement une erreur de syntaxe dans une directive include)

Expected an identifier
Description : Un identifiant est attendu (généralement une erreur de syntaxe dans une directive define ou ifdef)

Invalid parameter specified in option "input" : ""C:\Program Files (x86)\CASIO\fx-9860G SDK\OS\FX\lib\setup.obj""
Description : Ne jamais installer le SDK dans un dossier dont le chemin comporte des parenthèses ! Mettez-le dans C:\Programmes\CASIO par exemple.

Cette liste est incomplète, si vous rencontrez d'autres erreurs, vous pouvez les poster ici, elles seront ajoutées.

Voici une liste en anglais de toutes les erreurs possibles et imaginables. Cela ne vous donne pas forcément une bonne solution, mais ça peut vous aiguiller sur une piste


Dernière modification : 26/09/2013 (Dark Storm)

Fichier joint


Précédente 1, 2, 3 ··· 10 ··· 16, 17, 18, 19, 20, 21, 22 ··· 24, 25, 26 Suivante
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 15/06/2014 17:21 | #


Mais oui...
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 15/06/2014 17:32 | #


void afficher_curseur(char numero)
{
    const unsigned char curseur1[]={
        0x40,0x0,0x0,0xc0,0x0, 0x0,0xc0,0x0,0x0,0xc0, 0x0,0x0,0xc0,0x0,0x80, 0xc0,0x0,0x80,0xc0,0x0,
        0x80,0xff,0xfe,0x80,0xc0, 0x0,0x80,0x7f,0xff,0x0 };
    const unsigned char curseur2[]={
        0x40,0x0,0x0,0x0,0xc0 ,0x0,0x0,0x0,0xc0,0x0 ,0x0,0x0,0xc0,0x0,0x0, 0x0,0xc0,0x0,0x0,0x1,
        0xc0,0x0,0x0,0x1, 0xc0,0x0,0x0,0x1,0xff, 0xff,0xff,0xfd,0xc0,0x0, 0x0,0x1,0x7f,0xff,0xff, 0xfe };
    const unsigned char *liste[]={curseur1,curseur2};

    char infos[]={7,30,17,10,1,45,32,10};
    numero--;
    ML_bmp_or(curseur[numero], infos[4*numero], infos[4*numero+1], infos[4*numero+2], infos[4*numero+3]);
}
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 15/06/2014 17:39 | #


Désolé mais mettre les infos après le tableau de pointeurs ne semble pas avoir une quelconque incidence
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 15/06/2014 17:40 | #


Je n'ai pas fait que ça.
J'ai surtout déclaré les bitmaps et le tableau de bitmaps en const.
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 15/06/2014 17:42 | #


Mais puisque je te dis que j'ai déjà essayé ><
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 20/06/2014 20:18 | #


line (0):cannot open output file


J'ai eu ça

WTF! La ligne 0 ça existe
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 20/06/2014 20:21 | #


Ben oui. Tu peux supposer que la variable du compilateur qui indique la ligne est initialisée à 0, et qu'il n'a pas commencé à parcourir le fichier quand l'erreur est survenue.
Tu as bien les droits dans ce dossier ?
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 21/06/2014 11:06 | #


oui oui, ça marchait jusqu'a hier

Ajouté le 22/06/2014 à 12:03 :
C:\Users\Yoann\Documents\CASIO\fx-9860G SDK\yugioh plateau\effect.c(0) : C3303 (F) Cannot output internal file


j'arrive pas à trouver le bug , j'ai tout vérifié , tout doit bien marché
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

Citer : Posté le 22/06/2014 12:13 | #


Vous ne pouvez pas mettre des espaces après vos virgules ?!!!
Et enlever l'intégralité du code des sprites, il ne sert à rien...

Je passe 25 minutes à modifier les messages parce qu'ils déforment la mise en page du forum... La prochaine fois, je supprime les messages si ils déforment encore la mise en page 15 minutes après qu'ils aient été posté.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 22/06/2014 13:15 | #


Ok, c'est noté. '
Je le ferai également.

Sinon, vous pouvez pas juste mettre un max-width ?
Edit: Ou un overflow-x: scroll;
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

Citer : Posté le 22/06/2014 13:23 | #


Pour l'overflow, c'est faisable, mais ça empêchera la lisibilité... Tandis qu'une virgule, c'est gratuit, mais ça peut sauver des vies
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Cartix Hors ligne Membre Points: 2748 Défis: 98 Message

Citer : Posté le 22/06/2014 13:24 | #


Reste calme hein Dark Storm Il suffit qu'ils mettent leur code dans un spoiler.
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 22/06/2014 13:24 | #


Dark storm a écrit :
Tandis qu'une virgule, c'est gratuit, mais ça peut sauver des vies


"Je vais manger, les enfants !"
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 22/06/2014 13:26 | #


@Dark Storm
Alors c'est le problème du Sprite Coder. En soi, il n'y a "qu'à" le signaler à Smashmaster pout qu'il mette son logiciel à jour.
Et je ne vois pas en quoi l'overflow cassera la lisibilité, celui qu'on a actuellement casse bien l'indentation.
D'ailleurs, je propose de réduire la taille de police des balises code.
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

Citer : Posté le 22/06/2014 13:27 | #


Cartix a écrit :
Reste calme hein Dark Storm Il suffit qu'ils mettent leur code dans un spoiler.

Désolé, c'est juste que ça doit être la 20ème fois qu'un code déforme la mise en page, donc ça commence à m'énerver
Surtout que ça passe pas inaperçu.

En fait, c'est surtout la faute au Sprite Coder qui ne met pas d'espaces entre ses virgules
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Kirafi Hors ligne Membre Points: 2179 Défis: 10 Message

Citer : Posté le 22/06/2014 18:49 | #


Bon, voila mon problème, j'ai essayé des trucs mais ça persiste
Image de mon écran
Alors ?


Ajouté le 22/06/2014 à 18:56 :
En fait, je ne sais pas ce que c'est comme erreur
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 22/06/2014 18:58 | #


Tu as fait n'importe quoi avec un pointeur, à tous les coups ; ce qui est intéressant, c'est l'erreur qui te dit que tu as tenté de lire à une adresse non autorisée.
Kirafi Hors ligne Membre Points: 2179 Défis: 10 Message

Citer : Posté le 22/06/2014 18:59 | #


C'est avec ce bout de
code
voila
if(PatternA==1){
    for(Z=0;Z!=Pattern1[2][0];Z++)ML_bmp_or(Obstacles[Anim/8],Pattern1[0][Z]+XPatternA,Pattern1[1][Z],5,5);    //Dessin de chaque obstacle du Pattern
    XPatternA++;
    if(XPatternA==Pattern1[2][2]+47)XPatternA=Pattern1[2][1];
    }


Ajouté le 22/06/2014 à 19:01 :
Et voici le
tableau
re-voila
const unsigned char Pattern1[3][6]={
       {10,5,15,5,15,10},
       {29,35,35,41,41,47},
       {6,6,56}};


Ajouté le 22/06/2014 à 19:12 :
Alors, j'ai fais des tests et en changeant mon tableau de char par un tableau de int ça fonctionne par contre je ne sais absolument par pourquoi
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 22/06/2014 19:33 | #


Dark Storm a écrit :
une virgule, c'est gratuit, mais ça peut sauver des vies

Généralement c'est bien quand c'est gratuit.
Et quand on sauve des vies aussi
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 22/06/2014 19:51 | #


@Kirafi
Le problème avec les unsigned char, c'est qu'ils sont assez limités en valeur.
De plus par convention, pour ce genre de tableaux, on utilise toujours des int (sauf quand vraiment on économise la mémoire mais dans ces cas-là, on sait ce qu'on fait).
Kirafi Hors ligne Membre Points: 2179 Défis: 10 Message

Citer : Posté le 22/06/2014 19:52 | #


Ouai, en fait les unsigned char c'est pour les sprites quoi
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Précédente 1, 2, 3 ··· 10 ··· 16, 17, 18, 19, 20, 21, 22 ··· 24, 25, 26 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2022 | Il y a 111 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd