0
此問題與this one類似,但對於yyparse而言,不是yylex。Bison/Yacc:yyparse未在此範圍內聲明
我一直在爲此奮鬥了幾個小時吧!我想從一個C程序調用yyparse(實際上是一個C++程序,但是我最終使用舊的flex/bison而不是新的C++ woops(甚至沒有意識到C++版本存在))。唯一的錯誤是'yyparse' was not declared in this scope
。我試過將變量定義爲全局變量,但似乎並不奏效。
在Flex文件我想:
extern "C" {
int yyparse();
}
,這在野牛文件:
extern int yyparse();
,但它沒有做任何事情。
所以..我想我錯了。問題是我正在使用自動構建make文件的Qt,所以如果沒有它再次被過度訓練,我不能編輯它。有沒有辦法解決這個問題而不改變鏈接?如果不是,那麼這個鏈接是如何完成的?
您應該顯示生成它們的文件名和錯誤消息。從你的問題中不清楚問題是你是用C++編譯器編譯Bison輸出,並且抱怨沒有'yyparse()'的先前定義,或者問題出現在代碼中調用'yyparse()'。你在哪裏把'extern int yyparse()'聲明放在Bison文件中?它是在文件頂部的'%{...%}'部分,還是在其他地方? –