小编use*_*756的帖子

Yacc和Lex包含混淆

我想知道如何使用调用yyparse的Makefile正确编译程序?

这就是我做的:

我有我的编译所有的常规文件Makefile文件,他们必须y.tab.c的或不lex.yy.c中连接(我应该让他们?)

我在我的代码之上执行此操作:

#include "y.tab.c"
#include "lex.yy.c"
#include "y.tab.h"
Run Code Online (Sandbox Code Playgroud)

当我尝试制作程序时会发生这种情况:

当我输入"make"时,它会给我很多警告.一些例子如下所示.

在函数yywrap': /src/parser.y:12: multiple definition ofyywrap'server.o:/src/parser.y:12:首先在这里定义utils.o:

在函数yyparse': /src/y.tab.c:1175: multiple definition ofyyparse'server.o:/src/y.tab.c:1175:首先在这里定义utils.o

我得到许多不同的错误,指的是不同的yy _***文件.我已成功编译过去多次调用yyparse,但这次似乎有所不同.这似乎非常像一个包含问题,但我不知道它是什么.我的所有头文件都有ifndef条件.

谢谢你的帮助!

yacc lex makefile bison flex-lexer

2
推荐指数
1
解决办法
3219
查看次数

标签 统计

bison ×1

flex-lexer ×1

lex ×1

makefile ×1

yacc ×1