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機能に基づいていました作業。
あなたのコードにはリンクされない '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