Flex和Bison定义了他们自己的“主要”功能

时间:2016-10-15 14:59:30

标签: c bison ld flex-lexer

Flex和bison定义了他们自己的main函数,因此当我使用库libflliby编译我的代码时,ld不想链接它,因为多次声明main。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

libflliby都定义了main但是如果你使用始终将库放在中的不变规则在链接命令中(或编译命令,如果你在一步中链接和编译)然后他们不应该创建任何问题。 (换句话说,永远不要在您要链接的对象或源文件之前放置-lfl -ly 。)

请注意,如果您没有定义或取消libfl,则只需yywrap。如果您使用的是flex并且不需要yywrap功能,请将%option noyywrap添加到您的Flex输入文件中,忘记libfl

此外,您根本不需要liby。除了main之外,它还定义了yyerror。但是,您应该始终自己定义yyerror,因此库完全没必要。

libflliby是"方便"库可以帮助编写快速和脏的测试或黑客。生产代码不应该依赖它们。他们添加的功能包含不到十几行不太有用的代码。