probléme de linkage,!!!!!!!!aidezzzz moiiiiiiiiiiii!!!! [visual C++ 6] - C++ - Programmation
Marsh Posté le 09-01-2005 à 22:03:27
sans code ni rien, ca va etre juste non ?
Marsh Posté le 09-01-2005 à 22:05:04
#ifndef __TREE_H__
#define __TREE_H__
char ops[6]={'*','/','+','-','=','\n'};
char* inputExpression;
int experLength;
typedef enum {rien,Mult,Div,Add,Sub,Equal} operande;
typedef struct Noeud{
operande op;
char c;
struct Noeud* filsG;
struct Noeud* filsD;
}Noeud;
typedef struct Arbre{
Noeud* racine;
}Arbre;
typedef struct Cell{
Noeud* n;
struct Cell* suivante;
}Cell;
typedef struct ListeN{
Cell* tete;
Cell* fin;
}ListeN;
/*Cette fonction permet de creer une liste de noeud temporaire*/
/* */
/* qui va servir à creer l'arbre syntaxique. */
/**************************************************************/
ListeN creer_liste(char*);
/*Ajoute un noeud a la fin de la liste*/
void addtoListe(Noeud*);
/*retourne le noeud de tete et le retire de la liste*/
Noeud* grapstoListe();
/*cette creer l'arbre syntaxique a partir d'une liste de noeud qui va etre interpréter*/
Arbre creerAbr(ListeN);
/*teste si l'arbre est vide ou c'est une feuille retourne:*/
/* */
/* .i!=0 si oui */
/* */
/* .i=0 sinon */
/* */
/**********************************************************/
int isEmpty(Arbre*);
int estFeuille(Arbre*);
#endif
Marsh Posté le 09-01-2005 à 22:06:30
et j'ai fais un Tree.c ou j'utilise mes variable externe ops et inputExpression
Marsh Posté le 09-01-2005 à 22:08:32
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>
#include "Tree.h"
void isOperande(char c){
extern char ops[6];
int i;
for(i=0;i<5;i++)
if(c==ops[i])
return;
printf("expression non valide\n" );
}
int readAndTest(){
extern char* inputExpression;
extern int experLength;
char ch[255];
int i=0,j=0;
gets(ch);
inputExpression=ch;
experLength=strlen(ch);
while(inputExpression[i]){
if(inputExpression[i]=='(')
j++;
else if(inputExpression[i]==')')
if(j !=0){
printf("expression non valide\n" );
return 0;
}
else
j++;
else if(!isdigit(inputExpression[i])){
printf("expression non valide\n" );
return 0;
}
else if(inputExpression[++i])
isOperande(inputExpression[i]);
i++;
}
return 1;
}
Marsh Posté le 09-01-2005 à 22:25:21
merci pour le site mais ça m'aide pas beaucoup tous ça je le connais le probléme je crois que c'est l'editeur de lien...mais je sais pas comment le résoudre
Marsh Posté le 09-01-2005 à 23:25:38
Tu sais, il ne faut pas avoir honte: si tu ne comprends pas le lien que je te donne, tu peux l'avouer tout de suite, hein. Parce qu'il répond précisément au problème que tu as.
Il faut que tu rajoutes "extern" devant le char ops dans le .h, et que tu enlèves le "extern" que tu as mis dans Tree.c.
Car je suppose que tu as un autre fichier .c qui inclus également Tree.h. Et c'est là qu'il y a le conflit...
Marsh Posté le 09-01-2005 à 21:19:30
bjr tout le monde voila je suis entrain de réaliser un projet sur visual et quan je compile j'ai se message d'erreur.........
Tree.obj : error LNK2005: _ops already defined in main.obj
Debug/ProjetC.exe : fatal error LNK1169: one or more multiply defined symbols found.
j'ai toute essayé mais j'arrive a reglé le probléme quelqun pourrai m'aidé svppppppppp
je vous rappel que j'ai essayé le compilateur C et C++ j'ai meme fait la procedure habituel
#ifndef ..........
#define .........
déclarations
#endif