在flex和c文件中编写了以下代码,但编译器显示“对'yywrap'的 undefined reference ”错误。
%{
int nchar;
int nline;
%}
%%
[\n] {nline++;}
. {nchar++;}
%%
void main(void){
yylex();
printf("%d%d,nchar,nline");
}
有人问过这样的问题,所有答案都基于忽略yywrap函数,例如添加
#定义yywrap()1
在这种情况下,该程序可以运行但不能运行,但是我希望它可以运行。
最佳答案
您可以这样定义自己:
int yywrap() {
// open next reference or source file and start scanning
if((yyin = compiler->getNextFile()) != NULL) {
line = 0; // reset line counter for next source file
return 0;
}
return 1;
}
或决定不使用它:
%option noyywrap
或安装它;对于基于redhat的os来说是这样的:
yum -y install flex-devel
./configure && make
关于compiler-errors - 对yywrap()的 undefined reference ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47421946/