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 ... , 19, 20, 21, 22, 23, 24, 25, 26Suivante
Dark stormEn ligneMembre d'honneurPoints: 10825 Défis: 176 Message

Citer : Posté le 30/01/2015 23:25 | #


Un conseil : codez toujours en anglais : non seulement ça vous fait pratiquer, mais surtout vous n'avez pas de problèmes avec les accents

Ajouté le 30/01/2015 à 23:27 :
Ah oui : et surtout, ne mélangez jamais deux langues dans le code !
Je le dis parce que certains le font encore. (Ok je l'ai déjà fait, mais c'était y'a plus d'un an ou deux...
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
JavierxdHors ligneMembrePoints: 1899 Défis: 13 Message

Citer : Posté le 06/05/2015 00:06 | #


Bonjour, ça fait pas mal de temps que je passe pas par ici . Bref, j'ai décidé de commencer un nouveau jeu ( j'espère de ne pas l'abandoner celui ci... ) et en compilant j'ai trouvé des erreurs de compilation, mais ce qui me fait poster ici c'est que le compilateur localise les erreurs dans les librairies standard:
Cliquez pour découvrir
Cliquez pour recouvrir
C:\CASIO\fx-9860G SDK\OS\SH\include\stddef.h(21) : C2132 (E) No parameter name
C:\CASIO\fx-9860G SDK\OS\SH\include\stdlib.h(25) : C2500 (E) Illegal token ";"
C:\CASIO\fx-9860G SDK\OS\SH\include\stdlib.h(110) : C2139 (E) No parameter type
C:\CASIO\fx-9860G SDK\OS\SH\include\stdlib.h(112) : C2139 (E) No parameter type
C:\CASIO\fx-9860G SDK\OS\SH\include\stdlib.h(113) : C2500 (E) Illegal token "size_t"
C:\CASIO\fx-9860G SDK\OS\SH\include\stdlib.h(114) : C2500 (E) Illegal token "size_t"
C:\CASIO\fx-9860G SDK\OS\SH\include\stdlib.h(115) : C2125 (E) Function returning function
C:\CASIO\fx-9860G SDK\OS\SH\include\stdlib.h(115) : C2500 (E) Illegal token ")"
C:\CASIO\fx-9860G SDK\OS\SH\include\stdlib.h(116) : C2500 (E) Illegal token "size_t"
C:\CASIO\fx-9860G SDK\OS\SH\include\stdlib.h(117) : C2125 (E) Function returning function
C:\CASIO\fx-9860G SDK\OS\SH\include\stdlib.h(117) : C2500 (E) Illegal token ")"

Évidemment je n'ai rien touché à ces fichiers (le SDK ne me laisse quand même pas les modifier). Quelqu'un sait ce qui pourrait se passer?
Calculatrices: g35+usb modifiée, PRIZM

My program is not working, I have no idea why.
My program is working, I have no idea why.

Programmes
Cliquer pour enrouler
Xavier59Hors ligneMembre de CreativeCalcPoints: 1337 Défis: 12 Message

Citer : Posté le 06/05/2015 09:24 | #


Ça m'est déjà arrivé. L'erreur viens sûrement de ton code ( que l'on a pas ) et le SDK localise les erreurs dans les libs standards car il y a sûrement un paramètres que tu passes a cette fonction ou quelque chose comme ça qu'il n'apprécie pas trop.
LephenixnoirEn ligneAdministrateurPoints: 15732 Défis: 136 Message

Citer : Posté le 06/05/2015 11:37 | #


T'as sans doute inclus un truc avec une erreur de syntaxe avant les headers standard.
JavierxdHors ligneMembrePoints: 1899 Défis: 13 Message

Citer : Posté le 06/05/2015 13:32 | #


Effectivement il y avait une erreur syntaxe dans un des fichiers inclus avant la librairie standard (le SDK a quand même une façon très bizarre de localiser les erreurs ). Merci beaucoup.
Calculatrices: g35+usb modifiée, PRIZM

My program is not working, I have no idea why.
My program is working, I have no idea why.

Programmes
Cliquer pour enrouler
LephenixnoirEn ligneAdministrateurPoints: 15732 Défis: 136 Message

Citer : Posté le 06/05/2015 20:41 | #


Ben non, c'est normal. Tous les compilateurs feraient ça, parce que l'erreur ne se propage que dans les fichiers subséquents et ne peut donc pas être détectée tout de suite.
JavierxdHors ligneMembrePoints: 1899 Défis: 13 Message

Citer : Posté le 06/05/2015 20:56 | #


Oui, mais tenant compte que l'erreur était un point virgule manquant à un prototype (oui, finalement ce n'était que ça), le compilateur devrait avoir planté à la ligne suivante ou à la fin du fichier, au lieu d'au fichier inclus suivant. Mais bon, je ne sais rien sur la détection d'erreurs par les compilateurs, donc probablement je me trompe
Calculatrices: g35+usb modifiée, PRIZM

My program is not working, I have no idea why.
My program is working, I have no idea why.

Programmes
Cliquer pour enrouler
LephenixnoirEn ligneAdministrateurPoints: 15732 Défis: 136 Message

Citer : Posté le 06/05/2015 20:59 | #


La gestion des erreurs n'est pas une chose facile. Ça dépend souvent des compilateurs.
Cependant, j'ai déjà eu ce genre de problèmes avec gcc par exemple.
JavierxdHors ligneMembrePoints: 1899 Défis: 13 Message

Citer : Posté le 08/05/2015 19:15 | #


Moi non, c'est pour ça que je trouve bizarre. Probablement j'ai eu plus de chance.
Calculatrices: g35+usb modifiée, PRIZM

My program is not working, I have no idea why.
My program is working, I have no idea why.

Programmes
Cliquer pour enrouler
Ti.du.du39Hors ligneMembre de CreativeCalcPoints: 1290 Défis: 0 Message

Citer : Posté le 19/06/2015 11:42 | #


Je crois que cette erreur n'est pas mise dans l'inventaire^^

** L2011 (E) Invalid parameter specified in option "input" : ""C:\Program Files (x86)\CASIO\fx-9860G SDK\OS\FX\lib\setup.obj""

sa me mets sa, pourtant j'ai bien mis le fichier avec les autres librairies
Merci d'avance
" L'Homme prouve son intelligence en innovant dans la connerie "
LephenixnoirEn ligneAdministrateurPoints: 15732 Défis: 136 Message

Citer : Posté le 19/06/2015 11:47 | #


Ne jamais installer le SDK dans un chemin comportant des parenthèses !

Fiouh, on l'a dit des centaines de fois, comment est-ce que vous arrivez encore à le rater... ?
Dark stormEn ligneMembre d'honneurPoints: 10825 Défis: 176 Message

Citer : Posté le 19/06/2015 17:16 | #


Ajouté à la liste.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
CodeblocksHors ligneMembrePoints: 73 Défis: 4 Message

Citer : Posté le 28/08/2016 11:51 | #


J'ai comme message d'erreur : **L2300 (E) Duplicate symbol "_ML_vram_adress"in"C:\User......\Debug\test.obj

alors que je lance la commande ML_clear_sreen() et ML_clear_vram() de monochromelib (j'ai bien inclus monochromelib en début de programme)
Les programmes, c'est pas compliqué : une suite de 1 et de 0, pourquoi alors est-ce qu'on se complique la vie avec un tas de langage?
LephenixnoirEn ligneAdministrateurPoints: 15732 Défis: 136 Message

Citer : Posté le 28/08/2016 11:56 | #


Cette erreur signifie que le code de la fonction ML_vram_adress() a été compilé en double ! As-tu bien inclus une seule fois MonochromeLib dans ton projet (Source files), et inclus uniquement l'en-tête ?

#include "MonochromeLib.h"
// et pas
#include "MonochromeLib.c"
CodeblocksHors ligneMembrePoints: 73 Défis: 4 Message

Citer : Posté le 28/08/2016 12:00 | #


J'avais effectivement les deux mais maintenant avec seulement monochromelib.h j'ai undefined external symbol "ML_clear_vram" bon je vais regardé ce qui est au dessus.....

Ajouté le 28/08/2016 à 12:01 :
oups c'est pour "_ML_clear_vram" c'est ce qui est marqué
Les programmes, c'est pas compliqué : une suite de 1 et de 0, pourquoi alors est-ce qu'on se complique la vie avec un tas de langage?
LephenixnoirEn ligneAdministrateurPoints: 15732 Défis: 136 Message

Citer : Posté le 28/08/2016 12:02 | #


Pour utiliser MonochromeLib, il faut modifier le fichier MonochromeLib.h et décommenter les define associés aux fonctions que tu veux utiliser.

La bibliothèque est assez lourde, ce système est fait pour ne pas avoir à utiliser plus que nécessaire.

Edit : Le '_' devant le nom est normal, ça ne fait aucune différence
Dark stormEn ligneMembre d'honneurPoints: 10825 Défis: 176 Message

Citer : Posté le 28/08/2016 12:04 | #


T'as bien ajouté MonochromeLib.c aux fichiers du projet ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
CodeblocksHors ligneMembrePoints: 73 Défis: 4 Message

Citer : Posté le 28/08/2016 12:07 | #


j'ai bien ajouté monochromelib.c au fichier et j'ai décommenter les fonctions qui m'interressent
Les programmes, c'est pas compliqué : une suite de 1 et de 0, pourquoi alors est-ce qu'on se complique la vie avec un tas de langage?
LephenixnoirEn ligneAdministrateurPoints: 15732 Défis: 136 Message

Citer : Posté le 28/08/2016 12:09 | #


Tiens, c'est curieux. Essaie la recompilation complète (Project > Rebuild All) ?

(La gestion des dépendances du SDK est broken)
CodeblocksHors ligneMembrePoints: 73 Défis: 4 Message

Citer : Posté le 28/08/2016 12:09 | #


mais dans mon code j'appelle clear screen avant clear vram mais c'est clear vram qui bug

Ajouté le 28/08/2016 à 12:11 :
quand je rebuil all c'est le même problème mais pour clear screen

Ajouté le 28/08/2016 à 12:12 :
?????? bon au 2eme rebuild all ca a marché je sais pas pourquoi

Ajouté le 28/08/2016 à 12:13 :
Merci !!!! mais qu'es ce que tu voulais dire par "la gestion des dépendances du SDK est broken" ?
Les programmes, c'est pas compliqué : une suite de 1 et de 0, pourquoi alors est-ce qu'on se complique la vie avec un tas de langage?
LephenixnoirEn ligneAdministrateurPoints: 15732 Défis: 136 Message

Citer : Posté le 28/08/2016 12:14 | #


Normalement quand on modifie un header, il faut tout recompiler. Le SDK ne l'a pas fait parce que le fichier d'en-tête n'a sans doute pas été ajouté dans "Files in project" dans ton projet, mais si tu l'ajoutes il renvoie des erreurs inutiles. D'où la remarque.
Pages : Précédente1 ... , 19, 20, 21, 22, 23, 24, 25, 26Suivante

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