gpt4 book ai didi

c - Bison/Yacc : yyparse not declared in this scope

转载 作者:行者123 更新时间:2023-11-30 16:01:25 25 4
gpt4 key购买 nike

这个问题类似于this one但对于 yyparse,而不是 yylex。

我已经为此奋斗了几个小时了!我想从一个 C 程序(实际上是一个 C++ 程序,但我最终使用旧的 flex/bison 而不是新的 C++ woops 程序(没有意识到 C++ 版本存在))调用 yyparse 。唯一的错误是'yyparse'未在此范围内声明。我尝试过将变量定义为全局变量,但似乎不起作用。

在我尝试过的 Flex 文件中:

extern "C" {
int yyparse();
}

Bison 文件中的内容:

extern int yyparse();

但它没有做任何事情。

所以..我认为我链接错误。问题是我使用的是 Qt,它会自动构建 make 文件,所以我无法编辑它,除非它再次被覆盖。有没有什么方法可以在不更改链接的情况下解决问题?如果没有,链接是如何完成的?

最佳答案

yyparse 声明应该位于调用 yyparse 的 C++ 文件包含的 header 中,而不是位于 flex 或 bison 文件中,因为 C++ 文件是需要声明。 bison 将在其生成的源文件中创建所需的声明。

关于c - Bison/Yacc : yyparse not declared in this scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6636035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com