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 ... , 21, 22, 23, 24, 25, 26
ShinigamixmaHors ligneMembrePoints: 4 Défis: 0 Message

Citer : Posté le 17/10/2017 20:26 | #


D'accord merci à tout les 2. J'espérais avoir mal compris . En faite à la base c'est un programme qui me permettrais de faire des calcules qui résoudrais mes exercices d'eux même sur le modèle de l'illumination de phong et d'autre exercices similaire. C'est censé être simple à codé en c++ mais s'il faut faire la console et tt ça risque de devenir un peu plus compliqué.
Il va falloir que je me mette à lire la doc. Une dernière question, à part ça est ce que les tableaux sont gérer ?
LephenixnoirHors ligneAdministrateurPoints: 16097 Défis: 140 Message

Citer : Posté le 17/10/2017 20:32 | #


Les tableaux C, par exemple int t[3], sont gérés. En revanche les vector ne le sont *pas*, et l'implémentation de string est « incomplète et sans garantie ». Bien que le standard C++ impose que tout compilo soit shippé avec la STL, visiblement ils ont eu la flemme.

Pour résumer : tu as les outils du C, et tu as l'orienté objet, y compris new et delete. Tu n'as presque rien d'autre.
ShinigamixmaHors ligneMembrePoints: 4 Défis: 0 Message

Citer : Posté le 17/10/2017 20:42 | #


D'accord merci
ZezombyeHors ligneRédacteurPoints: 1629 Défis: 12 Message

Citer : Posté le 17/10/2017 20:44 | #


Les vector sont sortis avec le C++98, donc ça m'étonne pas qu'ils ne soient pas gérés, sachant que le compileur d'Hitachi ne gère que le C89.

Sinon, si tu le peux, passe sous linux et compile avec gint (ou installe mingw sur ton windows, mais tu pourras pas tester le programme sur l'émulateur du SDK), comme ça tu auras un compilateur à jour.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
LephenixnoirHors ligneAdministrateurPoints: 16097 Défis: 140 Message

Citer : Posté le 17/10/2017 21:01 | #


Je ne conseillerais gint que si vous savez vraiment ce que vous faites, il faut encore y mettre pas mal les mains pour arriver à faire ce qu'on veut...

Side note : on peut exécuter les add-ins compilés par gcc sous le SDK, Nessotrin a pointé du doigt une histoire de header. Un petit coup de checksum à corriger, peut-être trois flags, mais il est possible que le g1a-wrapper que j'ai écrit soit suffisamment mauvais pour produire des g1a invalides à l'origine.
Pages : Précédente1 ... , 21, 22, 23, 24, 25, 26

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