Undefined Reference To yywrap
I prefer to define my own yywrap(). I'm compiling with C++, but the point should be obvious. If someone calls the compiler with multiple source files, I store them in a list or array, and then yywrap() is called at the end of each file to give you a chance to continue with a new file.
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;
}
The scanner calls this function on end of file, so you can point it to another file and continue scanning its contents. If you don't need this, use
%option noyywrap
in the scanner specification.
Although disabling yywrap
is certainly the best option, it may also be possible to link with -lfl
to use the default yywrap()
function in the library fl
(i.e. libfl.a
) provided by flex. Posix requires that library to be available with the linker flag -ll
and the default OS X install only provides that name.