[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 31/10/2013 14:33 | #
Ok, je vais essayer la 2ème solution puisque la première n'a pas marchée
Ajouté le 31/10/2013 à 14:41 :
Non toujours pas, j'ai essayé tes deux solutions et ça ne marche pas
Citer : Posté le 31/10/2013 14:46 | #
ML_bmp_or(TitleScr,0,0,128,64);
ML_display_vram();
Ceci doit être inclu dans un fichier .c
Est tu sur d'avoir mis #include "MonochromeLib.h" au début de ce fichier ?
Sinon, il faudrait avoir accès au code entier...
Citer : Posté le 31/10/2013 14:50 | #
C'est bien dans un .c et j'ai bien inclus "MonochromeLib.h"
Je désinstalle et réinstalle le SDK pour voir
Citer : Posté le 31/10/2013 14:58 | #
D'ailleurs, c'est plus rapide de faire
memcpy(ML_vram_adress(), TitleScr, 1024);
ML_display_vram();
Mais tu gagne 0,0001s, donc pour un fond d'écran de menu, c'est peu utile
Citer : Posté le 31/10/2013 15:00 | #
Ok, je vais voir, je suis en train de réinstaller le SDk
Ajouté le 31/10/2013 à 15:32 :
Non, marche toujours pas
Citer : Posté le 31/10/2013 15:42 | #
t'es sur que le #define que t'a décommenté est bien celui du projet en cours ? Ca m'est déjà arrivé de modifier le ML d'un autre projet sans m'en rendre compte
Citer : Posté le 31/10/2013 15:48 | #
Non pourtant, c'est bizarre
Citer : Posté le 31/10/2013 15:56 | # | Fichier joint
Pourquoi je me sens mal aimé par le SDK quand je vois ca ...
#include "stdio.h"
int i,j,X_affichage,Y_affichage;
unsigned int key;
char grille[9][9];
char proba[3][3];
char affichage[1];
int AddIn_main(int isAppli, unsigned short OptionNum)
{
demarage();
affichage_grille();
menu();
}
demarage(){
for(i=1;i<10;i++){
for(j=1;i<10;j++){
grille[i][j]=0;
}
}
Bdisp_AllClr_DDVRAM();
PrintMini(80,58,"Version 1.0",0);
for(i=1;i<10;i++){
if( i!=9 ) Bdisp_DrawLineVRAM(1,6*i+i-1+1,63,6*i+i-1+1);
Bdisp_DrawLineVRAM(6*i+i-1+1,1,6*i+i-1+1,63);
}
i++;
Bdisp_DrawLineVRAM(64,1,64,63);
PrintXY(67,30,"Sudo-Solv",0);
do{
GetKey(&key);
} while(key != 30004);
}
menu(){
}
affichage_grille(){
for(i=1;i<10;i++){
for(j=1;i<10;j++){
X_affichage=7*(i-1)+1;
Y_affichage=7*(j-1)+3;
sprintf(affichage,"%d",grille[i][j]);
PrintXY(X_affichage,Y_affichage,affichage,0);
}
}
}
#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum){ return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
#pragma section
Citer : Posté le 31/10/2013 18:10 | #
Alors tu n'as pas typé tes fonctions qui sont en dessous du main. Tu dois mettre le mot clef "void" avant.
Et tu dois mettre leur prototype au dessus de main, ou alors tu écris tes fonctions au dessus de main.
J'ai pas le temps de regarder tous les détails.
Citer : Posté le 31/10/2013 19:12 | #
hem, pour moi: 6*i+i-1+1=7*i (a moins qu'il ne manque des parenthèses ou que je sois nul en calcul algébrique)
Bdisp_DrawLineVRAM(1,6*i+i-1+1,63,6*i+i-1+1); = Bdisp_DrawLineVRAM(1,7*i,63,7*i);
Bdisp_DrawLineVRAM(6*i+i-1+1,1,6*i+i-1+1,63); = Bdisp_DrawLineVRAM(7*i,1,7*i,63);
et secundo, toutes les fonctions définies APRES le int AddIn_main(int isAppli, unsigned short OptionNum) doivent être prédéfinies dans un header sinon elles sont inutilisables dans le AddIn_main. il te faudrait un main.h contenant:
void demarage();
void menu();
void affichage_grille();
et un #include "main.h" au début de ton programme, après les autres #include (pour que les fonctions que tu utilise puissent utiliser les fonction des libs officielles)
-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
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 31/10/2013 19:33 | #
Pour le calcul algébrique ... (pas d escuse j avoue )
Et pour les prototypes, je comprends pas pourquoi sur un autre programme ca marchais tres biens sans ...
Mais après je suis tout à fait d accord pour dire que j ai oublie de les mettre
Ajouté le 01/11/2013 à 10:19 :
Je tombe toujours sur le même écran de la part de l’émulateur
C'est a cause de l’accès et de l’écriture dans 'grille"
#include "stdio.h"
#include "main.h"
int i,j,X_affichage,Y_affichage;
unsigned int key;
int grille[9][9];
char proba[3][3];
char affichage[1];
int AddIn_main(int isAppli, unsigned short OptionNum)
{
demarage();
affichage_grille();
menu();
}
void demarage(){
for(i=1;i<10;i++){
for(j=1;i<10;j++){
grille[i][j]=0;
}
}
Bdisp_AllClr_DDVRAM();
PrintMini(80,58,"Version 1.0",0);
for(i=1;i<10;i++){
if( i!=9 ) Bdisp_DrawLineVRAM(1,6*i+i-1+1,63,6*i+i-1+1);
Bdisp_DrawLineVRAM(6*i+i-1+1,1,6*i+i-1+1,63);
}
i++;
Bdisp_DrawLineVRAM(64,1,64,63);
PrintXY(67,30,"Sudo-Solv",0);
do{
GetKey(&key);
} while(key != 30004);
}
void menu(){
}
void affichage_grille(){
for(i=1;i<10;i++){
for(j=1;i<10;j++){
X_affichage=7*(i-1)+1;
Y_affichage=7*(j-1)+3;
sprintf(affichage,"%d",grille[i][j]);
PrintXY(X_affichage,Y_affichage,affichage,0);
}
}
}
#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum){ return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
#pragma section
void menu();
void affichage_grille();
Citer : Posté le 01/11/2013 12:45 | #
Theprog... tu as oublié qu'un tableau commence à l'indice ZERO
et donc grille qui est du 9*9, son dernier élément c'est 8.8
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Citer : Posté le 01/11/2013 13:07 | #
Arf je m y ferais jamais
Donc quand on declare un tableau [1][1], apres ça devient [0][0] ?
Ajouté le 01/11/2013 à 14:21 :
Arg toujours la même erreur ...
Il devait y avoir un probleme la mais ca doit pas etre le seul
#include "stdio.h"
#include "main.h"
int i,j,X_affichage,Y_affichage;
unsigned int key;
int grille[9][9];
char proba[3][3];
char affichage[1];
int AddIn_main(int isAppli, unsigned short OptionNum)
{
demarage();
affichage_grille();
menu();
}
void demarage(){
/*
for(i=1;i<10;i++){
for(j=1;i<10;j++){
grille[i][j]=0;
}
}
*/
Bdisp_AllClr_DDVRAM();
PrintMini(80,58,"Version 1.0",0);
for(i=1;i<10;i++){
if( i!=9 ) Bdisp_DrawLineVRAM(1,6*i+i-1+1,63,6*i+i-1+1);
Bdisp_DrawLineVRAM(6*i+i-1+1,1,6*i+i-1+1,63);
}
i++;
Bdisp_DrawLineVRAM(64,1,64,63);
PrintXY(67,30,"Sudo-Solv",0);
do{
GetKey(&key);
} while(key != 30004);
}
void menu(){
}
void affichage_grille(){
for(i=0;i<8;i++){
for(j=0;i<8;j++){
X_affichage=7*(i-1)+1;
Y_affichage=7*(j-1)+3;
sprintf(affichage,"%d",grille[i][j]);
PrintXY(X_affichage,Y_affichage,affichage,0);
}
}
}
#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum){ return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
#pragma section
Citer : Posté le 01/11/2013 14:27 | #
for(i=1;i<10;i++){
for(j=1;i<10;j++){
grille[j]=0;
}
tu n'as pas changé
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Citer : Posté le 01/11/2013 19:25 | #
ben si ca c'est commenté donc ca compte pas
Citer : Posté le 01/11/2013 20:29 | #
hem, ce que dit btl est que a un moment i ou j valent 9, hors le dernier indice de ton tableau est [8][8] donc il y a une erreur
-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
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 01/11/2013 20:34 | #
non c'est bon j'ai trouvé mon erreur qui était un i mis a la place d'un j dans une boucle
comme quoi les petites erreurs sont souvent les plus énervantes ...
Citer : Posté le 01/11/2013 20:46 | #
oui enfin même si c'est mis en commentaire, je te conseille de ne pas le laisser comme ça
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Citer : Posté le 01/11/2013 20:47 | #
c'est bon c'est tout modifié et ca marche a merveille
merci de ton aide a toi et a Limachi
Citer : Posté le 23/12/2013 21:12 | #
Bonsoir j'ai un problème avec ce code
{
Vecteur AC, vecteur, normale;
...
[b][blue]return[/blue][/b] normale;
}
Vecteur est bien définie, bon header, etc.
Le problème c'est que dès que j'éxécute ce code, le compilateur m'affiche :
System ERROR
TLB ERROR
Au passage quand je fais
normale = NormaleSegment(screen_segments[i], point);
Citer : Posté le 23/12/2013 21:48 | #
Essaye de déclarer normale en tant que pointeur, car je pense qu'il ne peut retourner une structure complete, mais a priori un pointeur cela devrait passer
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !