Probleme de compilation d'un programme en c

Résolu
light59155 Messages postés 5 Statut Membre -  
light59155 Messages postés 5 Statut Membre -
Bonjour,

J'ai fait un programe avec MPLAB et C18, ce programme est en C.
Suite à ce programme j'ai voulu le compiler et il m'a afficher une erreur mais je ne sait pas d'ou elle vient.
Voicvi le message d'erreur que j'ai eu:

Executing: "C:\MCC18\bin\mcc18.exe" -p=18F8723 /i"C:\MCC18\h" "liaison.c" -fo="liaison.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
A language-plugin exception occurred and was logged.
----------------------------------------------------------------------
Debug build of project `C:\Program Files\liaison.mcp' failed.
Preprocessor symbol `__DEBUG' is defined.
Wed Jul 30 08:26:53 2008
----------------------------------------------------------------------
BUILD FAILED

Ce programme va servir à choisir vers quel oscillateur on va se diriger.
Il y aura dans ce programme une liaison I2C.

Merci d'avance pour vos réponses.

Voici le programme qui ne marche pas:


/*programme pour la liaison I2C*/
/*Ce programme sert à choisir sur quelle carte on veut aller. */
/*Ensuite on choisi quelle oscillateur ET/OU capteur on veut commander*/

#include <p18f8723.h>
#include <stdio.h>

/*-----------------------------*/
/* Définition des constantes */
/*-----------------------------*/

#define adresse_carte 0x09

/*---------------------------*/
/* Prototype des fonctions */
/*---------------------------*/

void main(void);
unsigned char oscillateur(void);
unsigned char capteur(void);
int choix_carte(unsigned char adresse);

/*----------------------*/
/* Debut du programme */
/*----------------------*/

void main(void)
{
unsigned int C;
unsigned int X;
unsigned int Y;

/*---------------------------------------------------*/
/* Choisir la carte avec laqulle on veut intéragir */
/*---------------------------------------------------*/
/*
printf (p);
scanf ("%d", &C);
choix_carte(C);
*/
/*--------------------------------------*/
/* Choisir la valeur de l'oscillateur */
/*--------------------------------------*/
/* printf(p);
scanf("%d", &X);
*/
/*--------------------------------*/
/* Choisir la valeur du capteur */
/*--------------------------------*/
/* printf("Numero du capteur :");
scanf("%d", &Y);
*/
/*------------------------------------------*/
/* A-t-on un oscillateur et/ou un capteur */
/*------------------------------------------*/

if (1 <= X <= 10)
oscillateur();
else if (1 <= Y <= 3)
capteur();
}

int choix_carte(unsigned char adresse)
{
if (adresse = adresse_carte)
{return (1);}
else
{return (0);}
}par contre les programme de l'oscillateur et du capteur marche, mais sont à part si vous les voulait dites le moi.
            
            

5 réponses

Char Snipeur Messages postés 10112 Statut Contributeur 1 299
 
Salut.
Je ne connait pas ce compilo.
Le message d'erreur n'est vraiment pas eexplicite, il dit juste qu'il a planté. J'ai l'impression que le problème viens d'un problème dans la ligne d'exécution de la compilation, je dirai qu'une option ou une suite d'option fait planté le compilateur, surement dans la suite des -O...
0
Archi-dessin Messages postés 273 Statut Membre 25
 
salut,
votre programme est attaché à d'autre petit programme externe du programme principal
0
light59155 Messages postés 5 Statut Membre
 
oui mon programme utilise d'autre petit programme annexe qui eux fonctionnent correctement seul.
Seulement celui là ne fonctionne pas seul et donc le programme en entier ne fonctionne pas.
0
Char Snipeur Messages postés 10112 Statut Contributeur 1 299
 
heu... là il me semble que tu ne fait qu'une compilation, donc normalement pas de problème à ce stade de DLL ou autre.
Le seul message du compilo qui pourrait être intéressant est :
"A language-plugin exception occurred and was logged. "
Qui si je traduit bien veux dire qu'une exception (une erreur) d'une des des extension du C s'est produite. Et que cette erreur a été consigné. Reste à savoir où a été écrite cette erreur.
Si tu compile correctement d'autre fichier, ça me conforte dans l'idée ça viens du compilo, peut être d'une option que tu n'utilise pas, ou qui n'est pas utilisé d'habitude.
ça c'est moche : (1 <= X <= 10) en C standard c'est équivalent à ((1 <= X) <= 10) c'est à dire toujours vrai ! Il faut alors écrire (1 <= X && X <= 10)
if (adresse = adresse_carte)
{return (1);} 
une jolie affectation au lieu d'une comparaison ! la comparaison en C, c'est '=='
La déclaration de main en dehors de l'implementation ne lui plait peut être pas.
Sinon, je ne vois rien de spécifique ou de tordu dans ton programme qui nécessiterai une telle erreur.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
light59155 Messages postés 5 Statut Membre
 
j'ai réussi à résoudre mon problème.
en fait j'avait rajouter le fichier liaison.o, c à cause de ça qu'il planté.
Après l'avoir enlevé je peut continuer, malgré les quelques erreurs qu'il me trouve encore mais maintenant c en compilant tous le programme et plus partie par partie.

merci à tous pour vos réponse
0