在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/

10-10 05:09