この質問はthis oneに似ていますが、yyparseではyylexではありません。Bison/Yacc:yyparseはこのスコープで宣言されていません
私は今数時間これと戦ってきました!私はCプログラム(実際にはC++のもの)からyyparseを呼びたいと思っていますが、C++の新しいバージョンではなく古いflex/bisonを使ってしまいました。唯一のエラーは'yyparse' was not declared in this scope
です。変数をグローバルとして定義しようとしましたが、動作しないようです。
私が試したのFlexファイルで:バイソンファイル内
extern "C" {
int yyparse();
}
と、この:
extern int yyparse();
が、それは何もしませんでした。
だから私は間違ってリンクしていると思います。問題は、makeファイルを自動的に作成するQtを使用しているため、再度上書きすることなく編集できないことです。リンクを変更せずに問題を解決する方法はありますか?そうでない場合、リンクはどのように行われるのですか?
ファイル名とそれらを生成するエラーメッセージを表示する必要があります。あなたの質問から、あなたがC++コンパイラでBisonの出力をコンパイルしていて、 'yyparse()'の前の定義がないか、または問題がコード内にあるのかどうかは不明です。 'yyparse()'を呼び出します。 Bisonファイルに 'extern int yyparse();'宣言をどこに入れましたか?それはファイルの先頭の '%{...%}'セクションか他の場所にありますか? –