0

vc6でbison&flexを使用すると、以下のエラーが発生しました

lex.yy.c(395):エラーC2146:構文エラー:欠落している';' 識別子'YY_PROTO'の前lex.yy.c(395):致命的なエラーC1004:予期しないファイルの終わりが見つかりました

これの原因は何でしょうか?助けてください。

コメントからコピー:

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

2 に答える 2

1

YY_PROTO マクロは、プロトタイプをサポートせずに古い先行標準 C をサポートするためだけのものです。現在、これをサポートしていないコンパイラを見つけるのは難しいでしょう。つまり、最初のデバッグ手順として、プロトタイプを使用したいので完全に削除することができます。つまり、lex.yy.c を次のように変更します。

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

lex.yy.c が生成されたファイルであることはわかっているため、永続的な修正にはなりませんが、少なくとも問題が YY_PROTO の定義に関連していることを確認する必要があります。

于 2009-08-06T13:03:24.010 に答える