我想知道如何正確編譯一個帶有調用yyparse的Makefile的程序?Yacc和Lex包含混淆
這是我做的:
我有我的編譯所有的常規文件Makefile文件,他們有沒有連接y.tab.c的或lex.yy.c中(我應該讓他們?)
我這樣做對我的代碼頂部:
#include "y.tab.c"
#include "lex.yy.c"
#include "y.tab.h"
這是當我試圖讓該程序會發生什麼:
當我只需鍵入「製造」,它給了我很多的警告。一些例子如下所示。
在功能yywrap': /src/parser.y:12: multiple definition of
yywrap ' server.o :/src/parser.y:12:第一這裏定義 utils.o:
在功能yyparse': /src/y.tab.c:1175: multiple definition of
yyparse' server.o:/ SRC/Y .tab.c:1175:首先在這裏定義 utils.o
我得到許多不同的錯誤指向不同的yy _ ***文件。我已經成功地編譯了過去對yyparse的多個調用,但這次似乎有所不同。這似乎很像一個包含問題的地方,但我不知道它是什麼。我所有的頭文件也都有ifndef條件。
感謝您的幫助!
將Lex和Yacc生成的C代碼包含到單個文件中是常規操作 - 但只要在一個文件中完成,就可以完成。您只在其他文件中包含標題,並且僅在它們確實需要標題中的信息時才使用。 –