在flex中编写了以下代码并生成了c文件,但编译器显示“未定义引用'yywrap'”错误。
%{
int nchar;
int nline;
%}
%%
[\n] {nline++;}
. {nchar++;}
%%
void main(void){
yylex();
printf("%d%d,nchar,nline");
}
这样的问题已被提出,所有答案都是基于忽略yywrap功能,如添加 #define yywrap()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