此问题与this one类似,但对于yyparse,而不是yylex。
我几个小时以来一直在和它斗争!我想从C程序中调用yyparse(实际上是一个C ++程序,但我最终使用旧的flex / bison而不是C ++ woops的新版本(没有意识到C ++版本甚至存在))。唯一的错误是'yyparse' was not declared in this scope
。我已经尝试将变量定义为全局变量,但它似乎不起作用。
在我试过的Flex文件中:
extern "C" {
int yyparse();
}
这是在Bison文件中:
extern int yyparse();
但它没有做任何事情。
所以..我想我错了。问题是我正在使用自动构建make文件的Qt,所以如果没有它再次被过度重写我就无法编辑它。有没有办法解决问题而不改变链接?如果没有,那么链接是如何完成的呢?
答案 0 :(得分:1)
yyparse
声明应该放在调用yyparse
的C ++文件所包含的标头中,而不是flex或bison文件,因为C ++文件是需要声明的文件。 bison将在其生成的源文件中创建所需的声明。