0

我已经在 ah 文件中声明了一个函数 f(),在野牛文件 ay 中定义它并在 a.cpp 文件中调用它。

我将其编译为:

      g++ a.cpp a.tab.c lex.yy.c -o a

它工作正常。

现在我想在 b.cpp 文件中调用这个函数 f() 。

我怎样才能做到这一点。

哪些文件要包含在 b.cpp 文件中,哪些文件要在编译时提供。

4

1 回答 1

0

#include "a.h"和打电话f()

从哪里来a.cpp?一般来说,对一个野牛文件和另一个程序文件使用相同的前缀是令人困惑的。它似乎a.cpp包含一个main()函数(尽管这只是基于您的g++调用的猜测),因此它作为其他程序的目标文件没有用。我要做的是如下所示:

bison -d -o parser.c parser.y
# For flex 2.5.4, you cannot put a space between -o and the filename.
# You should seriously think about upgrading to a non-prehistoric version
# flex -o lexer.c lexer.l
flex -olexer.c lexer.l
g++ -c -o parser.o parser.c
g++ -c -o lexer.o lexer.c
g++ -o a a.cpp parser.o lexer.o
g++ -o b b.cpp parser.o lexer.o

(以上将更改 的名称a.tab.h,因此您需要在 lexer.l 中修复它。但这只是一个建议。)

于 2013-09-19T05:24:30.003 回答