【发布时间】:2011-01-29 23:25:48
【问题描述】:
我想知道如何正确编译带有调用 yyparse 的 Makefile 的程序?
这就是我的工作:
我有一个编译所有常规文件的 Makefile,它们与 y.tab.c 或 lex.yy.c 没有连接(我应该拥有它们吗?)
我在我的代码之上执行此操作:
#include "y.tab.c"
#include "lex.yy.c"
#include "y.tab.h"
这是我尝试制作程序时发生的情况:
当我只输入“make”时,它会给我很多警告。部分示例如下所示。
在函数yywrap':
/src/parser.y:12: multiple definition ofyywrap'
服务器.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 条件。
感谢您的帮助!
【问题讨论】:
-
将 Lex 和 Yacc 生成的 C 代码包含到一个文件中是一种惯例 - 但只要它只在一个文件中完成就可以完成。您只在其他文件中包含标头,并且仅当它们确实需要标头中的信息时。
标签: makefile bison yacc lex flex-lexer