2009-08-06 77 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 - 如果它没有被定义,你的编译器会做一些非常奇怪的事情。