Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

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 ··· 7, 8, 9, 10, 11, 12, 13 ··· 20 ··· 24, 25, 26 Suivante
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

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


Ça m'était passé une fois. Je crois que l'erreur était un ; oublié à la fin du fichier (comme c'est le dernier caractère, il peut rien te mettre comme référence)
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
Dark storm Hors ligne Membre d'honneur Points: 11355 Défis: 176 Message

Citer : Posté le 28/09/2012 18:09 | #


C'est bon, juste un } oublié dans des conditions que je n'avais jugé bon d'indenter.
Comme quoi, un code clair résous pas mal d'erreurs...
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 28/09/2012 18:30 | #


Une erreur indiquée ne sert pas à te donner l'erreur mais à te faire comprendre qu'il y en a une
Dark storm Hors ligne Membre d'honneur Points: 11355 Défis: 176 Message

Citer : Posté le 28/09/2012 19:28 | #


Des fois, il m'indique des erreurs alors qu'il n'y en a aucune (je pense au "é" à la fin d'un commentaire).
Mais c'est sur, il y a toujours une raison.

(C'est ce que j'aime avec la prog => voir ici)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

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


Joli texte, mais vachement bordélique dans la mise en forme. C'est une traduction, non ?
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

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


C'est intéressant, mais je pense que l'auteur a une vision un peu arrogante de ce qu'est un programmeur. Nous ne sommes ni pires ni meilleurs que le reste de la société.

Pour l'image, je me suis rendu compte que le problème de l'encodage était que le colonnes étaient mises en désordre. Je les ai mis à la bonne place et j'ai enfin réussi à afficher l'image correctement
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
Dark storm Hors ligne Membre d'honneur Points: 11355 Défis: 176 Message

Citer : Posté le 28/09/2012 21:10 | #


Le texte original est The Hacker Manifesto, par The Mentor

[/HS]
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Vdragon.b Hors ligne Membre Points: 1401 Défis: 0 Message

Citer : Posté le 30/09/2012 11:25 | #


j'ai un C2133 (E) Multiple parameter declarations
au début du fichier où se trouve la fonction principale, et ceci quoi que je mette...
plus précisément à la première ligne de code, excepté les directives du préprocesseur.
there are many incredible things in the world...So,believe in yours dreams!
I own a graph 3575+.

Nitrosax Hors ligne Ancien rédacteur Points: 1061 Défis: 17 Message

Citer : Posté le 30/09/2012 12:05 | #


Vérifie la déclaration des prototypes de toutes tes fonctions.
Des fois, il suffit d'oublier un point virgule à cet endroit là pour provoquer des bugs assez inexplicables à la compilation.
Vdragon.b Hors ligne Membre Points: 1401 Défis: 0 Message

Citer : Posté le 30/09/2012 12:10 | #


merci! c'était ça: il manquait un ; à la fin d'un prototype dans un .h
there are many incredible things in the world...So,believe in yours dreams!
I own a graph 3575+.

Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 30/09/2012 12:28 | #


Cette erreur survient lorsque 2 paramètres d'une fonction ont le même nom.
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 30/09/2012 16:46 | #


J'ai un autre (et j'espère que dernier) problème:
fichier
Cliquer pour enrouler
#include "stdlib.h"
#include "fxlib.h"
#include "MonochromeLib.h"
#include "niveaux.h"
#include "stddef.h"

void gen_niveau( int niveauchoisi )
{
unsigned int key;
int *mat_niveau = NULL;
int x, y, largeur, hauteur, ecranx, int ecrany;
/*déclaration des bmp représentant les tiles qui
apparaissent dans les niveaux*/
unsigned char antiportal[] = {0xFF, 0xE7, 0xF3, 0xDB, 0xDB, 0xCF, 0xE7, 0xFF};
unsigned char sol[] = {0xFF, 0x99, 0xDB, 0xA5, 0xA5, 0xDB, 0x99, 0xFF};
unsigned char sortie[] = {0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C};

Bdisp_AllClr_DDVRAM();

if( niveauchoisi <= 5 )
{
hauteur = 8;
largeur = 16;
ecranx = 0;
ecrany = 0;
}

mat_niveau = calloc( hauteur * largeur , sizeof( int ) );

if(mat_niveau == NULL)
{
Bdisp_AllClr_DDVRAM();
PrintMini( 1, 1, (unsigned char*)"Erreur memoire. Appuyez sur menu", 1 );

while(1)
{
GetKey(&key);
}
}

matinit( mat_niveau, niveauchoisi);

for( y = largeur * ecrany; y < largeur * ecrany + 7; y++ )
{

for( x = 0; x< 15; x++ )
{

if( mat_niveau[y * largeur + x] == 1 ) ML_bmp_8_xor( sol, 8 * x, 8 * y );

if( mat_niveau [y * largeur + x] == -1 ) ML_bmp_8_xor( sortie, 8 * x, 8 * y );

if( mat_niveau [y * largeur + x] == 2 ) ML_bmp_8_xor( antiportal, 8 * x, 8 * y );
}

}

ML_display_vram(); //affichage des tiles générés dans la boucle précédente
jouer( mat_niveau, niveauchoisi, largeur, hauteur, ecranx, ecrany );
}

void matinit( int *mat_niveau, int niveauchoisi )
{
int x;
int liste1[128] = {1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,1,1,0,0,0,0,0,0,-1,1,0,0,0,0,1,
1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int liste2[128] = {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
2,0,0,0,0,0,0,0,0,0,0,0,-1,0,2,2,
1,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,1,
2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
/* int liste3[128] = {};
int liste4[128] = {};
int liste5[128] = {};
int liste6[256] = {};
int liste7[256] = {};
int liste8[256] = {};
int liste9[256] = {};
int liste10[256] = {};
int liste11[256] = {};
int liste12[256] = {};
int liste13[256] = {};
int liste14[256] = {};
int liste15[256] = {};
int liste16[512] = {};
int liste17[512] = {};
int liste18[512] = {};
int liste19[512] = {};
int liste20[512] = {};*/

switch( niveauchoisi )
{
case 1:
mat_niveau = liste1;
break;
case 2:
mat_niveau = liste2;
break;
/* case 3:
mat_niveau = liste3;
break;
case 4:
mat_niveau = liste4;
break;
case 5:
mat_niveau = liste5;
break;
case 6:
mat_niveau = liste6;
break;
case 7:
mat_niveau = liste7;
break;
case 8:
mat_niveau = liste8;
break;
case 9:
mat_niveau = liste9;
break;
case 10:
mat_niveau = liste10;
break;
case 11:
mat_niveau = liste11;
break;
case 12:
mat_niveau = liste12;
break;
case 13:
mat_niveau = liste13;
break;
case 14:
mat_niveau = liste14;
break;
case 15:
mat_niveau = liste15;
break;
case 16:
mat_niveau = liste16;
break;
case 17:
mat_niveau = liste17;
break;
case 18:
mat_niveau = liste18;
break;
case 19:
mat_niveau = liste19;
break;
case 20:
mat_niveau = liste20;
break;*/
}

}


La génération du niveau n'a pas lieu et le perso apparait dans le vide. Lorsque je regarde l'exécution avec Trace into, j'observe que des lignes d'affectation sont sautées (par exemple l'allocation de mat_niveau), de même que des conditions pourtant vraies (le switch dans matinit).

Ajouté le 30/09/2012 à 18:35 :
résolu
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
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 06/10/2012 16:38 | #


dites, il existe un record du monde du nombre de bugs sur un jeu? je viens encore de foirer mon minecraft:

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 06/10/2012 16:39 | #


Je sais pas, mon record doit être de 20 et quelques
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
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 06/10/2012 16:41 | #


moi, j'ai dépassé les 200 en 1 an (presque) sur le même programme
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 06/10/2012 17:12 | #


Non, moi je dis en même temps
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 06/10/2012 18:55 | #


Javierxd a écrit :

Non, moi je dis en même temps
Moi aussi mais ça compte pas c'est parfois une erreur qui en fait 500.
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 06/10/2012 19:09 | #


En tout cas, cette erreur me dit clairement que j'ai saturé la pile, ce qui est fort quand même 8)
Bon, je m'en vente pas, sa veut juste dire que j'ai encore programmé comme un pied l'affichage des textures...
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)
Siapran Hors ligne Membre Points: 3248 Défis: 17 Message

Citer : Posté le 06/10/2012 20:13 | #


bah faut éviter de faire trop de fonctions récursives quoi
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 06/10/2012 20:43 | #


Siapran a écrit :

bah faut éviter de faire trop de fonctions récursives quoi
On doit se retenir de programmer
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 06/10/2012 22:23 | #


difficile de réduire un code, sans squeezer des truc importants
je vais donc devoir le reprogrammer pour la 19ème fois...
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)
Précédente 1, 2, 3 ··· 7, 8, 9, 10, 11, 12, 13 ··· 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 v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 49 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