当我在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
最佳答案
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的定义有关。
关于c++ - 在vc6中使用bison和flex,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1238532/