gpt4 book ai didi

c - 从 main.c 调用 yyin 和 yyparse 时出错

转载 作者:太空狗 更新时间:2023-10-29 16:09:25 25 4
gpt4 key购买 nike

您好,我收到以下错误

main.c: undefined reference to yyin
main.c: undefined reference to yyparse

这就是我正在做的我有一个 lex 文件一个.l一个 yacc 文件通过

main.c 是:

#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
extern int yyparse();
extern FILE *yyin;
FILE *outFile_p;
main(int argc,char *argv[])
{
if(argc<3)
{
printf("Please specify the input file & output file\n");
exit(0);
}
FILE *fp=fopen(argv[1],"r");
if(!fp)
{
printf("couldn't open file for reading\n");
exit(0);
}
outFile_p=fopen(argv[2],"w");
if(!outFile_p)
{
printf("couldn't open temp for writting\n");
exit(0);
}
yyin=fp;
yyparse();
fclose(fp);
fclose(outFile_p);
}

在此之前我必须链接:
x·h和 x.c 。

我在终端上写了以下命令:

lex a.l  
yacc -v -d b.y
gcc -o x.o -c x.c
gcc -o main.o -c main.c
gcc -o myexecutable main.o x.o

那是我收到此错误的时候。我做错了什么?

最佳答案

您似乎忽略了 lex 和 yacc 生成的 .c 文件。它们通常称为 y.tab.clex.yy.c,但您最好自己检查一下。然后调用顺序应该类似于以下内容:

lex a.l  
yacc -v -d b.y
gcc -c y.tab.c
gcc -c lex.yy.c
gcc -c x.c
gcc -c main.c
gcc -o myexecutable *.o

关于c - 从 main.c 调用 yyin 和 yyparse 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5847902/

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