这个问题类似于this one,但对于yyparse,而不是yylex。
我已经为此战斗了几个小时!我想从C程序调用yyparse(实际上是C ++,但是我最终还是使用旧的flex / bison而不是较新的C ++低音扬声器(甚至没有意识到C ++版本存在))。唯一的错误是'yyparse' was not declared in this scope
。我尝试将变量定义为全局变量,但似乎不起作用。
在Flex文件中,我尝试过:
extern "C" {
int yyparse();
}
这在野牛文件中:
extern int yyparse();
但是它什么也没做。
所以..我想我链接错了。问题是我使用的是Qt,它会自动生成make文件,因此,如果不能再次覆盖它,我将无法对其进行编辑。有什么方法可以解决问题而无需更改链接?如果不是,该链接是如何进行的?
最佳答案
yyparse
声明应该放在调用yyparse
的C ++文件包含的标头中,而不是flex或bison文件中,因为C ++文件是需要声明的文件。野牛将在其生成的源文件中创建所需的声明。