1
flex 및 c 파일에 다음 코드를 작성했지만 컴파일러에서 "yywrap '에 대한 정의되지 않은 참조 오류가 표시됩니다. 이 같은정의되지 않음 참조 yywrap()
%{
int nchar;
int nline;
%}
%%
[\n] {nline++;}
. {nchar++;}
%%
void main(void){
yylex();
printf("%d%d,nchar,nline");
}
질문은 요청을받은 모든 답변은 #DEFINE의으로 yywrap (1) 이 경우 프로그램 실행하지만이 작동하지 않습니다하지만 난에 원하는 추가처럼 무시으로 yywrap 기능을 기반으로했다 작업.
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;
}
를 또는 그것을 사용하지 않기로 결정 :
코드에 'yywrap'에 대한 참조가있어 링크되지 않습니다. 그것을 정의 했습니까? 스텁 정의를 자동으로 정의하지 않는 버전을 사용하고 있습니까? 'yywrap'을 억제하고 싶지 않으면 그것을 정의하거나 Flex를 업데이트해야합니다. – jdv
나는 flex-2.5.4a-1-bin 버전을 사용한다. 어떻게 업데이트해야합니까? 다른 버전도 시도했지만 오류가 수정되지 않았습니다. i는 yywrap을 정의하지 않았습니다! – Nazanin
가장 쉬운 방법은 스텁 정의를 정의하는 것입니다. 즉, 실제로'yywrap()'이 필요 없다면, 아무 것도 만들지 말라. 몇 가지 조사를 해본 적이 있다고했지만 https://stackoverflow.com/questions/1811125/undefined-reference-to-yywrap의 답변 중 많은 부분이 여기에 적용됩니다. 예를 들어'-lfl' 링커 옵션을 사용하고 있습니까? – jdv