2009-08-06 73 views
0

彎曲,當我使用野牛&柔性用VC6,我得到了下面的錯誤使用野牛和用VC6

的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 
+1

您可能希望在帖子前後添加觸發錯誤的行以及其中的幾行。 – 2009-08-06 12:34:21

+0

這裏是線,使該誤差: 的#ifndef YY_SKIP_YYWRAP 的#ifdef __cplusplus 外部的 「C」 INT yywrap YY_PROTO((無效)); #else extern int yywrap YY_PROTO((void)); #endif #endif – Janaka 2009-08-06 12:37:02

+0

爲什麼你要使用像VC6這樣古老而過時的垃圾? – jalf 2009-08-06 15:27:06

回答

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的定義有關。

0

YY_PROTO是在同一個文件中定義的宏,因此在宏定義附近發生了一些奇怪的事情。在文件的前面搜索,看看如何定義YY_PROTO - 如果它沒有被定義,你的編譯器會做一些非常奇怪的事情。