Je me demande comment compiler correctement un programme avec un Makefile qui a des appels à yyparse dedans?Confusion d'inclusion Yacc et Lex
C'est ce que je fais:
j'ai un Makefile qui compile tous mes fichiers réguliers et ils ont pas de relations à y.tab.c ou lex.yy.c (Suis-je censé les avoir?)
Je le fais au-dessus de mon code:
#include "y.tab.c"
#include "lex.yy.c"
#include "y.tab.h"
C'est ce qui se passe lorsque je tente de rendre le programme:
quand je viens de taper « make », il me donne beaucoup d'avertissements . Certains des exemples sont présentés ci-dessous.
En fonction yywrap': /src/parser.y:12: multiple definition of
yywrap ' server.o: /src/parser.y: 12: tout d'abord défini ici utils.o:
En fonction yyparse': /src/y.tab.c:1175: multiple definition of
yyparse' server.o:/src/y .tab.c: 1175: d'abord défini ici utils.o
Je reçois beaucoup d'erreurs différentes se référant à différents fichiers yy _ ***. J'ai compilé avec succès des appels multiples à yyparse dans le passé, mais cette fois semble être différent. Cela ressemble énormément à un problème d'inclusion quelque part, mais je ne peux pas dire de quoi il s'agit. Tous mes fichiers d'en-tête ont aussi des conditions ifndef.
Merci pour votre aide!
Il est conventionnel d'inclure le code C généré par Lex et Yacc dans un seul fichier - mais cela pourrait être fait tant qu'il n'est fait que dans un seul fichier. Vous incluez uniquement les en-têtes dans d'autres fichiers et uniquement s'ils ont réellement besoin des informations des en-têtes. –