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 : 1, 2, 3, 4, 5, 6, ... 26Suivante
Dark stormHors ligneMembre d'honneurPoints: 10821 Défis: 176 Message

Citer : Posté le 18/03/2012 16:52 | #


A chaque fois que j'ai un "+" ou un "-", j'ai le droit à un "Undefined member name" suivit d'un "Illegal type for "-" (ou "+") "

D'ou cela peut il venir
Voici le bout de code qui contient les erreurs (c'est de la rotation + tangentes)

// changement sommet 1
        nouvs1X = floor(cos( atan(vaisseau2.mon/12) )*(vaisseau2.s1X-vaisseau2.somX) - sin( atan(vaisseau2.mon/12) )*(vaisseau2.s1y-vaisseau2.somy) + vaisseau2.somX);
        nouvs1y = floor(sin( atan(vaisseau2.mon/12) )*(vaisseau2.s1X-vaisseau2.somX) + cos( atan(vaisseau2.mon/12) )*(vaisseau2.s1y-vaisseau2.somy) + vaisseau2.somy);
        
        // changement sommet 2
        nouvs1X = floor(cos( atan(vaisseau2.mon/12) )*(vaisseau2.s1X-vaisseau2.somX) - sin( atan(vaisseau2.mon/12) )*(vaisseau2.s1y-vaisseau2.somy) + vaisseau2.somX);
        nouvs1y = floor(sin( atan(vaisseau2.mon/12) )*(vaisseau2.s1X-vaisseau2.somX) + cos( atan(vaisseau2.mon/12) )*(vaisseau2.s1y-vaisseau2.somy) + vaisseau2.somy);
        
        // changement sommet 3
        nouvs1X = floor(cos( atan(vaisseau2.mon/12) )*(vaisseau2.s1X-vaisseau2.somX) - sin( atan(vaisseau2.mon/12) )*(vaisseau2.s1y-vaisseau2.somy) + vaisseau2.somX);
        nouvs1y = floor(sin( atan(vaisseau2.mon/12) )*(vaisseau2.s1X-vaisseau2.somX) + cos( atan(vaisseau2.mon/12) )*(vaisseau2.s1y-vaisseau2.somy) + vaisseau2.somy);

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
PierrotllHors ligneAncien administrateurPoints: 5488 Défis: 41 Message

Citer : Posté le 18/03/2012 17:12 | #


La déclaration de ta structure est mauvaise.
"Undefined member name" signifie que tu fais appel à une variable membre qui ne fait pas partie de la structure.
T'as inclus ton header avec la déclaration de la structure ?
Tu dois avoir une erreur au moment de la déclaration de vaisseau2 de toute manière.

Et si tu ne trouves pas, envoi le projet complet, histoire de ne pas tourner en rond pendant 10 messages.
Dark stormHors ligneMembre d'honneurPoints: 10821 Défis: 176 Message

Citer : Posté le 18/03/2012 17:18 | #


ah, j'ai ceci: "WARNING: The following dependant file(s) do not exist: "jeu.h" "MonochromeLib.h". Line: 77", mais ce qui est bizarre, c'est qu'ils sont bien ajoutés au projet, et qu'ils sont bien dans le dossier du projet...

Ajouté le 18/03/2012 à 17:20 :
je précise que le header dans lequel j\'ai créé la structure est le fichier jeu.h en question
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
PierrotllHors ligneAncien administrateurPoints: 5488 Défis: 41 Message

Citer : Posté le 18/03/2012 17:29 | #


Il ne faut pas ajouter les headers au projet.
Et effectivement, si ta directive include est mal écrite, ce n'est pas surprenant que tu ne puisse pas utiliser la structure.
Dark stormHors ligneMembre d'honneurPoints: 10821 Défis: 176 Message

Citer : Posté le 18/03/2012 17:47 | #


comment ca je n'ajoute pas les headers au projet ?
j'ai vérifié, l'erreur vient bien des calculs car la compilation fonctionne tres bien sans. Et je ne voit pas où je fait appel "à une variable membre qui ne fait pas partie de la structure."

Merci du de même pour ta patience
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
PierrotllHors ligneAncien administrateurPoints: 5488 Défis: 41 Message

Citer : Posté le 18/03/2012 17:57 | #


Les headers ne doivent pas être ajoutés dans la fenêtre "Files in project" du SDK.
Si t'as un warning sur ta directive include, c'est qu'elle n'est pas bonne.
Pour l'histoire de variable membre, quand tu fais "vaisseau2.s1X", s1X est une variable membre de vaisseau2. Si ton header n'est pas inclus, le compilateur ne sait pas que vaisseau2 est une structure avec une variable membre s1X.
Dark stormHors ligneMembre d'honneurPoints: 10821 Défis: 176 Message

Citer : Posté le 18/03/2012 18:02 | #


j'ai enlevé les headers de "files in project" (merci pour le renseignement), mais le include marche très bien...
Je retourne voir si je n'ai pas une erreur d'orthographe...

Ajouté le 18/03/2012 à 18:14 :
c\'est de plus en plus énervant: juste après mes calculs, je peut utiliser les mêmes structures avec la fonction ML_line(vaisseau2.s1X, vaisseau2.s1y, vaisseau2.s2X, vaisseau2.s2y, ML_BLACK);
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
AdbookHors ligneMembrePoints: 1050 Défis: 19 Message

Citer : Posté le 07/04/2012 19:14 | #


Encore un problème...
tower *towers = NULL;
[Un peu de code]
towers = addTower(c->gridX, c->gridY, i, towers);//ligne 48

Et j'ai:
cursor.c(48) : C2222 (E) Type not compatible for "="

En sachant que la fonction addTowers renvoie tower* ...
What's wrong ??
--------------------------------------------------

Calculatrice: Graph 35+ (modifiée 75) + graph 75
Dead Labs est sorti ! N'hésitez pas à l'essayer et à voter !!!
PierrotllHors ligneAncien administrateurPoints: 5488 Défis: 41 Message

Citer : Posté le 07/04/2012 20:37 | #


Hm, je ne vois pas d'erreur, faudrait voir le code complet.

@Dark Storm : J'avais pas vu ton dernier post, le problème est réglé depuis ? Sinon pareil, faudrait voir le code complet.
AdbookHors ligneMembrePoints: 1050 Défis: 19 Message

Citer : Posté le 08/04/2012 14:32 | #


J'ai créé un nouveau projet avec le même code et ça a marché...
--------------------------------------------------

Calculatrice: Graph 35+ (modifiée 75) + graph 75
Dead Labs est sorti ! N'hésitez pas à l'essayer et à voter !!!
Dark stormHors ligneMembre d'honneurPoints: 10821 Défis: 176 Message

Citer : Posté le 11/04/2012 09:26 | #


Pierrotll a écrit :

@Dark Storm : J'avais pas vu ton dernier post, le problème est réglé depuis ? Sinon pareil, faudrait voir le code complet.


Si, le problème a été résolu. Merci encore pour tes indications

Ajouté le 13/04/2012 à 21:03 :
Bon, maintenant, j'ai un problème concernant les timers:

comment envoie-t-on une fonction prenant en compte un argument à un timer (et même comment en envoie-t-on tout court ) ?

J'ai essayé en faisant SetTimer(1, 25, deplacerScore(distance)); mais je doute que ce soit ça, car le compilateur m’indique C2201 (E) Cannot convert parameter "3"
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
PurobazHors ligneMembre d'honneurPoints: 2690 Défis: 110 Message

Citer : Posté le 13/04/2012 21:38 | #


Sans doute que tu peux pas.
Met la variable en global.
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
PierrotllHors ligneAncien administrateurPoints: 5488 Défis: 41 Message

Citer : Posté le 13/04/2012 22:22 | #


Bon, j'étais parti pour faire une explication longue pour expliquer le fonctionnement d'un timer, mais on va se contenter de ça :

La doc dit que SetTimer demande un (void*)(), tu lui donnes un (void*)(), donc un pointeur sur une fonction ne retournant rien et ne demandant rien.
LoulouxHors ligneAncien administrateurPoints: 7035 Défis: 61 Message

Citer : Posté le 14/04/2012 08:02 | #


En gros donne juste le nom de la fonction sans parenthèses ça marche impeccablement.
Dark stormHors ligneMembre d'honneurPoints: 10821 Défis: 176 Message

Citer : Posté le 14/04/2012 10:34 | #


thanks
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 15/04/2012 01:22 | #


J'ai un illegal token à la ligne 3 avant "joueur" (je me sens vraiment nul car le fichier n'a que 3 lignes (c'est un header) )
void cargar_lombriz(int x, int y);
void cargarmapa(int mapa);
void cargarjuego(int mapchoisi, int nombrejoueurs, joueur* jugador);

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
PierrotllHors ligneAncien administrateurPoints: 5488 Défis: 41 Message

Citer : Posté le 15/04/2012 01:48 | #


Le type joueur doit être déclaré dans ce header si tu veux l'utiliser ici. Si la déclaration de ce type est faite dans un autre header, il faut inclure cet autre header au début de celui ci, sinon le compilateur ne connait pas le type joueur, et pense que c'est un nom de variable et que tu as oublié son type.
NitrosaxHors ligneAncien rédacteurPoints: 1061 Défis: 17 Message

Citer : Posté le 15/04/2012 09:28 | #


Javierxd a écrit :
void cargar_lombriz(int x, int y);
void cargarmapa(int mapa);
void cargarjuego(int mapchoisi, int nombrejoueurs, joueur* jugador);

Tu codes en franco-espagnol ?
JavierxdHors ligneMembrePoints: 1899 Défis: 13 Message

Citer : Posté le 15/04/2012 17:48 | #


Oui, je me rend pas compte et je commence à mettre des fonctions en français et d'autres en espagnol
@pierrotll: merci
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
LimachiHors ligneYoutuberPoints: 2798 Défis: 67 Message

Citer : Posté le 15/04/2012 18:24 | #


j'ai un truc zarb la, et je comprend pas d'ou sa viens:
** L2011 (E) Invalid parameter specified in option "input" : ""C:\Program Files (x86)\CASIO\fx-9860G SDK\OS\FX\lib\setup.obj""

qui peut me dire comment corriger ou trouver l’erreur? mon programme marchait parfaitement bien puis paf, dans les dents que je me prend ce message

Ajouté le 15/04/2012 à 18:26 :
et c\'est mon minecraft qui me fait sa! j\'ai pas le droit a l’erreur, pas alors qu\'il avance de mieux en mieux!
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Pages : 1, 2, 3, 4, 5, 6, ... 26Suivante

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