bonjour à tous,
je suis en train d'écrire un compilateur et je rencontre un problème :
j'ai mes fonctions persos dans le fichier mes_fonctions.c et il a son .h associé que voici :
Code :
- #ifndef __FONCTIONS_H__
- #define __FONCTIONS_H__
- /* une entree dans la table des symboles */
- typedef struct tabl_symb_entree {
- char *nom;
- int *valeur;
- double *valeur2;
- /*
- Ce champ sert à la vérification des types
- 1: int
- 2: real
- 3: bool
- */
- int type;
- } entree;
- /* La table des symboles :) */
- entree table_symboles[512];
- /* Le nombre d'entrees dans la table */
- int nb_entrees=0;
- /* Prototypes de fonction */
- void traite_declaration(char *declaration);
- void install_tbl_symb(char *var, int type);
- #endif
|
je fais un include de ce fichier dans mon fichier lex et dans mon fichier yacc pour pouvoir utiliser les fonctions globales ( et les variables aussi)
mais mon compilo renvoie ça :
gcc -g compil.tab.c lex.yy.c mes_fonctions.o -lfl -o mop
/tmp/ccXMZqFZ.o: In function `yylex':
/home/nico/projets/ma_compil/lex.yy.c:587: multiple definition of `nb_entrees'
/tmp/ccqXccBw.ousr/share/bison/bison.simple:405: first defined here
mes_fonctions.o: In function `traite_declaration':
/home/nico/projets/ma_compil/mes_fonctions.c:6: multiple definition of `nb_entrees'
/tmp/ccqXccBw.ousr/share/bison/bison.simple:405: first defined here
collect2: ld returned 1 exit status
avec le #ifndef il devrait pas y avoir de pb non ??
je sèche là...
Message édité par black_lord le 03-01-2004 à 17:15:56