2009-08-06 18 views
0

を曲げる:エラーC2146:構文エラー:見つかりません ';' 「YY_PROTO」識別子の前に lex.yy.c(395):致命的なエラーC1004:予期しないファイルの終わりが見つかりました 使用バイソンと私はVC6とバイソン&フレックスを使用すると、私はエラー</p> <p> lex.yy.cを(395)の下になってしまったVC6

この原因は何ですか? 助けてください。コメントからコピー

#ifndef YY_SKIP_YYWRAP 
#ifdef __cplusplus 
extern "C" int yywrap YY_PROTO((void)); 
#else 
extern int yywrap YY_PROTO((void)); 
#endif 
#endif 
+1

エラーの原因となった行を、その行の前と後の2行で囲むことができます。ここ –

+0

はエラーを与える行である: #ifndefのYY_SKIP_YYWRAP の#ifdef __cplusplus にextern "C" int型のyywrapのYY_PROTO((無効)); #else extern int yywrap YY_PROTO((void)); #endif #endif – Janaka

+0

あなたがVC6のような古い古くからのジャンク品を使っている理由は何ですか? – jalf

答えて

1

はYY_PROTOマクロはプロトタイプのためのサポートなしで古い先行標準Cをサポートすることです。今日はそれをサポートしていないコンパイラを見つけるのは難しいでしょう。

#ifndef YY_SKIP_YYWRAP 
#ifdef __cplusplus 
extern "C" int yywrap (void); 
#else 
extern int yywrap (void); 
#endif 
#endif 

私はlex.yy.cをがあることを知っている:それはあなたがプロトタイプを使用したいので、次のようにlex.yy.cをを修正すなわち、それを完全に削除するために試みることができる最初のデバッグステップとしてあることを意味します永続的な修正ではありませんが、少なくとも問題がYY_PROTOの定義に関係していることを確認する必要があります。

0

YY_PROTOは、同じファイルで先に定義されているマクロなので、マクロ定義の近くで何か奇妙なことが起こっています。ファイルの前半で検索してYY_PROTOがどのように定義されているかを調べます。定義されていない場合、コンパイラは非常に奇妙なことをしています。

関連する問題