Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » [Aide SDK] Les erreurs de compilation
PierrotllHors ligneAncien administrateurPoints: 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


Pages : Précédente1 ... , 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26Suivante
LephenixnoirEn ligneAdministrateurPoints: 15785 Défis: 136 Message

Citer : Posté le 23/07/2014 17:59 | #


Pour ceux qui ne le savaient pas, les caractères accentués font partie de la table ASCII étendue, et donc à bannir de vos programmes. N'utilisez que les caractères standards, au moins eux sont multi-plateformes...
AragornHors ligneMembrePoints: 807 Défis: 5 Message

Citer : Posté le 29/07/2014 14:15 | # | Fichier joint


J'ai quelques erreurs avec la fonction ImYoda ( en pièce jointe ), qui est sensé afficher une image de yoda générée avec sprite coder. Voici le code d'erreur : Illegal token "]"; Illegal token "{" et Expression too complexe.


Mes Programmes
Cliquer pour enrouler
The Legend of CASIO - Basic Quest ( Basic )
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Projets
Cliquer pour enrouler
Zelda Ancestral Relics ( projet en C )
Projets que je soutient
Cliquer pour enrouler
Pokémon jade de Dodormeur
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun




Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
LephenixnoirEn ligneAdministrateurPoints: 15785 Défis: 136 Message

Citer : Posté le 29/07/2014 14:17 | #


Il faut mettre le type juste avant la déclaration, ce que tu as fait est interdit... en gros tu as défini une variable nommée Yoda de un octet, puis tu mets des crochets...
Il faut mettre :
const unsigned char Yoda[] = { ... };


Ajouté le 29/07/2014 à 14:18 :
Ah oui, et le ML_clear_vram(); en-dessous du tableau du coup.
AragornHors ligneMembrePoints: 807 Défis: 5 Message

Citer : Posté le 29/07/2014 14:22 | #


Merci, en effet c'est cela qui bloquait.
Par contre, du coup il affiche "Illegal token "1"" et "No parameter type"
C'est ici que j'ai dû faire une erreur :
void ML_bmp_or(Yoda,1,1);

Mes Programmes
Cliquer pour enrouler
The Legend of CASIO - Basic Quest ( Basic )
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Projets
Cliquer pour enrouler
Zelda Ancestral Relics ( projet en C )
Projets que je soutient
Cliquer pour enrouler
Pokémon jade de Dodormeur
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun




Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
LephenixnoirEn ligneAdministrateurPoints: 15785 Défis: 136 Message

Citer : Posté le 29/07/2014 14:28 | #


Ben, il te manque des paramètres là... en 3 et 4, la largeur et la hauteur.
AragornHors ligneMembrePoints: 807 Défis: 5 Message

Citer : Posté le 29/07/2014 14:29 | #


Je m'en suis aperçu et j'ai rajouté 128 et 64, mais ça ne change rien à l'erreur.
Mes Programmes
Cliquer pour enrouler
The Legend of CASIO - Basic Quest ( Basic )
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Projets
Cliquer pour enrouler
Zelda Ancestral Relics ( projet en C )
Projets que je soutient
Cliquer pour enrouler
Pokémon jade de Dodormeur
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun




Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
LephenixnoirEn ligneAdministrateurPoints: 15785 Défis: 136 Message

Citer : Posté le 29/07/2014 14:31 | #


J'ai rien vu, quel idiot. Pourquoi tu colles un "void" devant "ML_bmp_or()" ? C'est le type de la valeur de retour. La fonction ne retourne rien, ce mot-clé n'a rien à faire ici...
AragornHors ligneMembrePoints: 807 Défis: 5 Message

Citer : Posté le 29/07/2014 14:34 | #


Excuse moi, l'erreur est bien là.
En fait, je ne m'étais pas foulé et j'avais simplement recopié ça :
void ML_bmp_or(const unsigned char *bmp, int x, int y, int width, int height);

Merci encore

Mes Programmes
Cliquer pour enrouler
The Legend of CASIO - Basic Quest ( Basic )
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Projets
Cliquer pour enrouler
Zelda Ancestral Relics ( projet en C )
Projets que je soutient
Cliquer pour enrouler
Pokémon jade de Dodormeur
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun




Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
AragornHors ligneMembrePoints: 807 Défis: 5 Message

Citer : Posté le 29/07/2014 15:00 | # | Fichier joint


J'ai (encore :aie2: ) une erreur de compil : ce coup ci j'ai tout regroupé dans le .c principal, mais voici ce qui s'affiche :

Illegal token "return"
Illegal token "}"
Mes Programmes
Cliquer pour enrouler
The Legend of CASIO - Basic Quest ( Basic )
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Projets
Cliquer pour enrouler
Zelda Ancestral Relics ( projet en C )
Projets que je soutient
Cliquer pour enrouler
Pokémon jade de Dodormeur
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun




Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
DodormeurHors ligneAncien rédacteurPoints: 3928 Défis: 82 Message

Citer : Posté le 29/07/2014 15:03 | #


ligne 9, un } en trop
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
LephenixnoirEn ligneAdministrateurPoints: 15785 Défis: 136 Message

Citer : Posté le 29/07/2014 15:04 | #


Pourquoi "int" devant l'appel à ImYoda() !?
Et surtout, tu as mis une accolade fermante en trop dans ton main(), c'est évident non ? -_-
AragornHors ligneMembrePoints: 807 Défis: 5 Message

Citer : Posté le 29/07/2014 15:58 | #


Merci pour votre réponse. J'ai corrigé les erreurs. Et maintenant ça marche .
Lephenixnoir a écrit :
Pourquoi "int" devant l'appel à ImYoda() !?

Je dois t'avouer que je ne l'avais pas remarqué comme j'ai fait un copier coller de la déclaration de fonction, j'ai oublié d'enlever le int.


Ajouté le 30/07/2014 à 09:08 :
Mauvaise nouvelle : j'ai encore une erreur dans mon programme ( je vais finir par les collectionner ).
Bonne nouvelle : pour une fois ce n'est pas une erreur de compil'

En fait, j'aimerais faire une fonction où, si on appuie sur shift, on sort de la fonction AnimYoda.

J'avais pensé à ça, mais apparemment ça ne fonctionne pas : rien ne se passe quand j'appuie sur shift :
int AnimYoda (Chrono,VariableA) {  [green]//Début de la fonction[/green]
    int KEY_CTRL_SHIFT; [green]// Déclaration de la variable de la touche à enfoncer[/green]
    while(1)  [green]// Début de ma boucle (1)[/green]
        {
        
        while(Chrono <= 3000)  [green]// Début d'une autre boucle (2)[/green]
            {
            Chrono ++;
            
            [red]if(IsKeyDown(KEY_CTRL_SHIFT))
                {return 1; }    [/red]  [green]// Le truc qui ne marche pas[/green]
            } [green]// Fin de boucle (2)[/green]
        
        Chrono=1;
        
        if(VariableA==1)
            { VariableA=2;
            ML_pixel(92,37,0);
            ML_pixel(93,37,0);
                        // ...
} [green]//fin de boucle (1)[/green]

Mes Programmes
Cliquer pour enrouler
The Legend of CASIO - Basic Quest ( Basic )
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Projets
Cliquer pour enrouler
Zelda Ancestral Relics ( projet en C )
Projets que je soutient
Cliquer pour enrouler
Pokémon jade de Dodormeur
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun




Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
LephenixnoirEn ligneAdministrateurPoints: 15785 Défis: 136 Message

Citer : Posté le 30/07/2014 09:20 | #


Pourquoi tu déclares une variable du nom de KEY_CTRL_SHIFT ?
Pour information, tous les noms de touches sont des macros, c'est-à-dire qu'ils sont définis comme ceci :
#define KEY_CTRL_EXE 30004

Et que dans le code, avant la compilation, chaque fois que le mot KEY_CTRL_EXE est rencontré, il est remplacé par 30004.
Le shift a une valeur précise, et elle fonctionne comme ci-dessus. Toi, tu définis une variable non initialisée, qui prend donc une valeur aléatoire, et tu testes si la touche est pressée -- n'importe quelle touche.
Il ne faut pas déclarer de variable, laisse le préprocesseur remplacer KET_CTRL_SHIFT par ce qu'il veut -- 30006 en l'occurrence --, ça fonctionnera tout seul.
AragornHors ligneMembrePoints: 807 Défis: 5 Message

Citer : Posté le 30/07/2014 09:48 | #


Le problème, c'est que si je ne déclare pas la variable, j'ai une erreur de compil':
"Undeclared name : "KEY_CTRL_SHIFT"".
Mes Programmes
Cliquer pour enrouler
The Legend of CASIO - Basic Quest ( Basic )
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Projets
Cliquer pour enrouler
Zelda Ancestral Relics ( projet en C )
Projets que je soutient
Cliquer pour enrouler
Pokémon jade de Dodormeur
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun




Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
AragornHors ligneMembrePoints: 807 Défis: 5 Message

Citer : Posté le 30/07/2014 09:59 | # | Fichier joint


Si ça peut vous aider voici le .c.

edit : Les messages ne se fusionnent pas automatiquement sur un topic ?

edit 2 : Problème résolu dans la shoutbox grâce à Purobaz et Lephenixnoir.

Mes Programmes
Cliquer pour enrouler
The Legend of CASIO - Basic Quest ( Basic )
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Projets
Cliquer pour enrouler
Zelda Ancestral Relics ( projet en C )
Projets que je soutient
Cliquer pour enrouler
Pokémon jade de Dodormeur
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun




Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Dark stormHors ligneMembre d'honneurPoints: 10828 Défis: 176 Message

Citer : Posté le 30/07/2014 11:11 | #


Les messages ne fusionnent pas si tu poste un fichier-joint.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
LephenixnoirEn ligneAdministrateurPoints: 15785 Défis: 136 Message

Citer : Posté le 30/07/2014 16:02 | #


Pour info Aragorn (tant mieux si le problème est résolu), pour utiliser KEY_CTRL_SHIFT et compagnie il faut inclure fxlib.h au début du fichier.
C'est pas en déclarant une variable à valeur aléatoire du même nom que ça va fonctionner...
NessotrinHors ligneMembrePoints: 203 Défis: 0 Message

Citer : Posté le 01/08/2014 17:55 | #


C'est pas exactement le bon topic mais c'est le sujet le plus proche, j'ai l'erreur:
"Run-time error in DLSimUI.mnuRunRun_Click"
"Error 28: Out of stack space"
Je suis sous windows 8.1 avec 8go de ram, je ne vois donc pas comment le sdk peut exploser le stack :@. J'ai redémarrer le sdk et le pc mais c'est toujours le même problème par ailleurs les fenêtres des variables globales et locales sont vides, je suppose que c'est lié
Nessotrin, développeuse un peu trop occupée avec la vie pour être présente sur PlanetCasio.
Voici Spassus2, mon jeu de combat spatial procédural abandonné, le NESSCASDK, mon SDK 'barebones' fait maison (C'est pour les maso uniquement) et CasioUsb, mon utilitaire de transfert d'addin pour Linux.
Dark stormHors ligneMembre d'honneurPoints: 10828 Défis: 176 Message

Citer : Posté le 01/08/2014 23:52 | #


C'est pas la stack de l'ému que t'aurai pas explosé ? Parce il a moins de 64ko
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
NemhardyHors ligneGrand maître des Traits d'EspritPoints: 1235 Défis: 54 Message

Citer : Posté le 06/08/2014 17:27 | #


C'est pendant l'exécution de l'add-in que tu as ce soucis ?
N'attendez pas qu'il n'y ait plus de miel : スススススススススススススススススススススススススス養蜂家スススススススススススススススススススススススススススススススススススス蜂家
NinestarsHors ligneMembrePoints: 2253 Défis: 22 Message

Citer : Posté le 07/08/2014 19:31 | #


Depuis le temps que je pose cette question : comment afficher les caractères spéciaux ? Comme les flèche 0xE69B
Pages : Précédente1 ... , 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 82 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