Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

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, 4, 5 ··· 10 ··· 20 ··· 24, 25, 26 Suivante
Limachi Hors ligne Youtuber Points: 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)
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 15/04/2012 21:31 | #


t'as du mettre comme paramètre un type de variable incorrect, mais tu devrais donner la fonction pour qu'on puisse le voir
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
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 15/04/2012 21:46 | #


Mais non, c'est un problème classique, le SDK ne supporte pas d'avoir une parenthèse dans son chemin d'accès, donc il ne faut pas l'installer dans "Program Files (x86)".
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 15/04/2012 22:30 | #


a? et merde, je le réinstalle de suite


Ajouté le 15/04/2012 à 22:51 :
bien, sa remarche, merci PierotLL
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)
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 18/04/2012 21:40 | #


J'ai un problème avec une structure:
void menu(int* nombrejoueurs, int* mapchoisi);

typedef struct joueur joueur; //Multiple variable declarations
struct joueur
{int x, y; //Multiple tag declarations
int vida;
};

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
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 18/04/2012 22:06 | #


Tu dois protéger tes headers contre l'inclusion infinie (voir tuto SDZ tout à la fin).
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

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


Mais ce fichier n'a pas de #include
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
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 18/04/2012 22:38 | #


Réfléchis. Si tu déclares une structure dans ce header, et que ce header est inclu dans plusieurs fichiers sources, alors le compilateur va lire plusieurs fois ton header. Si tu ne le protège pas avec :
#ifndef NOMDUFICHIER
#define NOMDUFICHIER
...
#endif
alors la structure sera déclarée plusieurs fois, 2 structures n'ont pas le droit d'avoir le même nom, d'où le "Multiple variable declarations".
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 18/04/2012 22:44 | #


Ok, je l'ai fait et ça marche, merci (faudrait que je commence à prendre ces bonnes habitudes...)
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
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 18/04/2012 23:14 | #


Ouais, c'est des petites habitudes.
- Chaque .c doit avoir son .h du même nom, et vice versa (sauf main.c)
- Chaque .h contient #ifndef, #define, #endif
- Chaque .c inclu le .h qui lui correspond
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 27/05/2012 17:24 | #


j'ai un "no type nor storage class" à la ligne du prototype (les types joueur et gravedad se trouvent sur menu.h):
#ifndef DEF_JUGAR
#define DEF_JUGAR
#include "menu.h"

jugar(joueur* jugador, int nombrejoueurs, int planetas, gravedad* Gravedad);

#endif

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
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 27/05/2012 18:26 | #


Si la fonction ne retourne rien, elle doit être de type void.
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 27/05/2012 19:22 | #


Zut, c'est vrai, le type de fonction! Ça faisait déjà longtemps que je ne touchais pas le C, mais je ne croyais pas aller oublier quelque chose de si basique
Merci

Ajouté le 27/05/2012 à 19:58 :
Maintenant j\'ai un illegal token, mais il me signale aucun mot, il met juste 2 guillemets (dsl que la condition du while soit si longue )
#include \"fxlib.h\"
#include \"menu.h\"
#include \"spritesandmaps.h\"
#include \"jugar.h\"

void jugar(joueur* jugador, int nombrejoueurs, int planetas, gravedad* Gravedad)
{int i;
do
{for(i=1; i<=nombrejoueurs; i++)
{planetas=1;
}
} while (!((jugador[1].vida>0 && jugador[2].vida<=0 && jugador[3].vida<=0 && jugador[4].vida<=0) || (jugador[1].vida<=0 && jugador[2].vida>0 && jugador[3].vida<=0 && jugador[4].vida<=0) || (jugador[1].vida<=0 && jugador[2].vida<=0 && jugador[3].vida>0 && jugador[4].vida<=0) || (jugador[1].vida<=0 && jugador[2].vida<=0 && jugador[3].vida<=0 && jugador[4].vida>0) || (jugador[1].vida<=0 && jugador[2].vida<=0 && jugador[3].vida<=0 && jugador[4].vida<=0)));

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
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 27/05/2012 23:11 | #


Il n'y a pas d'erreur de syntaxe dans ce code. L'erreur est à quelle ligne ? Vérifie que ça ne vienne pas d'un header.

A part ça, je trouve ça plutôt moche de mélanger 2 langues dans un code source. Je préfère quand c'est tout en anglais (parce que je suis déjà tombé sur des sources en portugais, et j'ai galéré à comprendre).
Pour ta condition, fais une boucle qui comptabilisent le nombre de joueurs qui ont une vie supérieure à 0, ce sera plus rapide et bien plus lisible.
Et indente le code aussi.
Siapran Hors ligne Membre Points: 3248 Défis: 17 Message

Citer : Posté le 28/05/2012 14:48 | #


nan autant je m'en fout au niveau langues, autaunt un code a besoin d'être commenté un minimum.

du moment que c'est intelligible, osef
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 28/05/2012 17:39 | #


L'erreur se trouve dans la condition du while. Pour les autres choses que vous avez dit, en ce moment je ne pense qu'à faire marcher le programme. Quand je le finirai, je ferai plus attention à l'optimisation du code. Merci quand même
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
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 28/05/2012 18:17 | #


Perso je fais tout en français mais en respectant les conventions anglaises (Get,Set,Is,etc) et ça passe très bien.
Par contre quand on ne publie pas les sources pas besoin de commenter, sauf si c'est un projet monstre et qu'on a peur de ne pas se retrouver ou de plus comprendre le code.
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 28/05/2012 20:09 | #


Louloux a écrit :

Par contre quand on ne publie pas les sources pas besoin de commenter, sauf si c'est un projet monstre et qu'on a peur de ne pas se retrouver ou de plus comprendre le code.


Y'a pas besoin d'un projet monstre pour commenter. Et c'est toujours un gain de temps par la suite, surtout si tu laisse le projet genre 1, 2 ou plusieurs semaines, après, pour s'y retrouver, c'est galère...
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 28/05/2012 22:06 | #


Bon, en revenant sur mon problème, avec quelques tests j'ai localisé l'erreur à peu près à la fin de la ligne, mais je l'ai pas encore trouvé...
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
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 28/05/2012 23:22 | #


Non, j'a pu compiler ton code tel quel.
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 29/05/2012 08:05 | #


C'est du C orienté objet ? GG, moi dans ce cas j'utilise le C++ (enfin mon projet angry birds en C++ n'utilise même pas l'OO mais c'est pour d'autrs raisons).
Précédente 1, 2, 3, 4, 5 ··· 10 ··· 20 ··· 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 v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 131 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