如何摆脱YYSTYPE的重复声明?
问题描述:
下面是相关错误:如何摆脱YYSTYPE的重复声明?
grammar.y:72: error: conflicting declaration ‘typedef union YYSTYPE YYSTYPE’
y.tab.h:83: error: ‘YYSTYPE’ has a previous declaration as ‘typedef union YYSTYPE YYSTYPE’
make: *** [y.tab.o] Error 1
我使用Flex和byacc在一起,产生一个翻译。我的版本有这样的结构:
- 从grammar.y文件中创建y.tab.h。
- 在tokens.lex文件中包含y.tab.h,并编译生成lex.yy.c.
- 将lex.yy.c包含回语法文件中。这样,我们可以看到yylex。
似乎正在发生的事情是这样的:y.tab.h包含YYSTYPE联合的联合声明。这包含在lex.yy.c中,它被grammar.y包含。但同时,grammar.y正在制作它自己的联盟版本,以及两个冲突。
这不是标准方法吗?有什么我需要改变,使其正确构建?
答
糟糕。原来我并没有编译野牛。我的其他系统有yacc符号链接到野牛,所以我不得不将makefile改为使用bison而不是yacc。
我有同样的问题,现在修好了! – tlehman 2015-01-22 16:22:48