未定义的参考yywrap()

时间:2017-11-21 20:16:45

标签: compiler-errors

在flex中编写了以下代码并生成了c文件,但编译器显示“未定义引用'yywrap'”错误。

%{
int nchar;
int nline;
%}
%%
[\n] {nline++;}
. {nchar++;}
%%
void main(void){
yylex();
printf("%d%d,nchar,nline");
}  

这样的问题已被提出,所有答案都是基于忽略yywrap功能,如添加     #define yywrap()1 在这种情况下,程序运行但不起作用,但我希望它能够工作。

1 个答案:

答案 0 :(得分: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的操作系统来说是这样的:

    yum -y install flex-devel
    ./configure && make