【发布时间】:2014-06-11 08:25:17
【问题描述】:
我想在我自己的项目中使用 yacc/bison 解析器。
使用我自己的 Makefile 构建解析器时,一切正常。我从http://ymorin.is-a-geek.org/projects/kconfig-frontends 获取了源代码(只是解析器:/<path-to-kconfig>/libs/parser。
现在,当在 Eclipse 中将这些文件包含到 C++ 项目中时,在点击 make 后,编译器在 .y 文件处崩溃,因为语法错误 - 无法读取 .y - 语法。所以我从构建过程中排除了解析器。
在Yacc and Lex inclusion confusion 的回答中,我读到只需要包含 .h 文件,才能使用解析器的功能。
所以我所做的是:
- 为了从 my 项目中访问解析器源,我创建了一个简单的函数,它只在 yconf.y 和 yconf.c 中的控制台上打印一行:
void testout(char *txt) {printf(txt);} - 我什至用函数头
void testout(char *txt);创建了一个 yconf.h - 用我自己的 makefile 编译了解析器
-
main,我想调用函数的地方如下:
#include "y.tab.h" #include "yconf.h" #include <stdio.h> extern "C"{ int main(int argc, char *argv[]) { char configIn[] = "test"; printf(configIn); testout(configIn); return 0; } }
错误
现在编译时出现错误:undefined reference to 'testout(char*)'。但 Eclipse 本身可以解析该功能 - 单击该功能时,yconf.h 将打开。这就是为什么我不知道问题到底出在哪里。
Eclipse 设置:
在 /project/properties/C/C++ Build/Settings 中,我为 gcc 和 g++ 和链接器放置了相同的包含路径到解析器源。此外,我在此设置中将y.tab.h 和yconf.h 添加为“包含文件”
如果需要更多信息,请询问。
感谢任何有关如何解决此问题的建议。感谢支持
亲切的问候
【问题讨论】:
标签: c eclipse parsing makefile bison