符号yy_switch_to_buffer和yy_create_buffer定义在哪里?

时间:2016-01-18 16:38:04

标签: flex-lexer

我正在尝试构建一个使用 flex 的项目,并且在链接时,未定义以下flex符号:yy_create_bufferyy_switch_to_buffer。这些显然是flex manual中记录的flex函数。

您知道这些功能的定义在哪里吗?我怀疑他们来自一个flex库应该传递给链接器......但是,我已经搜索了我的发行版(redhat)的最新flex,flex-devel包,并且似乎没有任何这样的库。

1 个答案:

答案 0 :(得分:1)

符号位于flex的输出中,而不是库中。它们在骨架中定义(flex扩展为m4)。如果您遇到与这些符号的链接问题,则问题可能是由于引用代码的错误定义:

  • 骨架可以生成C或C ++代码;在后一种情况下,需要使用类名来链接它,例如yyFlexLexer::yy_create_buffer
  • 可以通过yy的命令行选项更改前导flex以更改前缀。编译某些文件时,您的构建脚本可能会忽略提供此选项。