[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
Citer : Posté le 22/06/2014 19:52 | #
Ouai, en fait les unsigned char c'est pour les sprites quoi
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Citer : Posté le 22/06/2014 19:53 | #
Voilà.
Si tu veux économiser un peu, au lieu de tes int tu peux mettre des unsigned short.
Citer : Posté le 22/06/2014 19:55 | #
Ok, et alors "const short" me permet de stocker des nombre de combien à combien ?
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Citer : Posté le 22/06/2014 19:57 | #
"const" n'influe par sur les valeurs. short, c'est de -32768 à 32767. unsigned short, de 0 à 65535.
Citer : Posté le 22/06/2014 20:01 | #
Ok, encore merci Lephénixnoir , je vais mettre des short, en plus c'est plus propice à l'été
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Citer : Posté le 22/06/2014 20:04 | #
:aie2:
Citer : Posté le 19/07/2014 21:26 | #
J'ai le SDK qui me dit "Jeu.cpp(0) : C3303 (F) Cannot output internal file"
A quoi est-ce dû ?
Citer : Posté le 19/07/2014 21:29 | #
Le fichier est introuvable. Vérifie le chemin, et retire-le des fichiers du projet s'il est incorrect.
Citer : Posté le 19/07/2014 21:33 | #
Ok je vais vérifier, j'ai fait une copie de mon projet, possible que ça vienne de ça. Merci
Ajouté le 19/07/2014 à 21:46 :
Non même pas, j'ai vérifié sur le sdk j'avais bien tous les bons fichiers, et j'ai tout effacé puis tout rajouté au projet.
Citer : Posté le 19/07/2014 21:49 | #
Au temps pour moi, "output"
Tu as bien les droits dans le dossier ? Le chemin est correct (ne comporte pas de parenthèses, etc...) ?
Citer : Posté le 19/07/2014 21:57 | #
Un dossier normal, je n'ai pas changé le nom de quoi que ce soit. Avant ça fonctionnait, j'ai modifié quelques trucs dans mon programme, rajouté une struct et voilà.
Citer : Posté le 19/07/2014 22:04 | #
Alors c'est ton code qui déconne... vérifie tes blocs, au cas où.
Sinon, mets-le nous, ce sera plus simple (surtout les passages que tu as modifiés).
Citer : Posté le 19/07/2014 22:17 | #
Pas de soucies pour les blocs, tous bien fermés.
C'est trop long pour que je le mette ici et mes modifications sont complètement éparpillées.
J'avais fait une copie juste avant je vais voir ce qui cloche en modifiant au fur et à mesure ma copie jusqu'à l'original.
Citer : Posté le 19/07/2014 22:17 | #
C'est pas la méthode la plus efficace, mais en effet c'est la meilleure pour trouver...
Citer : Posté le 22/07/2014 22:17 | #
J'ai trouvé mon "erreur" !!! En fait c'est un bug du SDK lorsque un commentaire se termine par un "é"
Le simple fait de le retirer fait fonctionner la compilation !
Merci pierrotll : ici
Citer : Posté le 22/07/2014 22:18 | #
C'est bon a savoir ça
Zelda de Smashmaster
Super Geek Brothers de Siapran
Pac-Man
Pac-Man Color
Meta Ball
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Citer : Posté le 22/07/2014 22:23 | #
Oui c'est sûr ! je devenais fou...
Citer : Posté le 22/07/2014 22:46 | #
Qui code avec des accents ici ?
Citer : Posté le 22/07/2014 22:48 | #
Dans le code faut pas en mettre certes, mais dans les commentaires, c'est sensé être indifférent, surtout que apparemment ça bug que si le "é" est en dernier caractère.
Citer : Posté le 23/07/2014 13:56 | #
Oui c'est vrai que c'est mieux de coder en anglais car il y a pas ce problème d'accent
Zelda de Smashmaster
Super Geek Brothers de Siapran
Pac-Man
Pac-Man Color
Meta Ball
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
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...