我在 Visual Studio 2005 中运行程序时遇到了一个奇怪的问题。解释我在做什么:
- 项目在 Visual Studio 6 中
- 将项目转换为 Visual Studio 2005
在 lexapp.c 中出现错误(这是在我将 app.l 文件提供给它之后从 Unix 机器生成的 C 文件)
错误 - 初始化器不是常量
FILE *yyin = {stdin}, *yyout = {stdout};
将上面的代码更改为
FILE *yyin, *yyout;
并将以下代码放入
yylex()
yyin = stdin; yyout = stdout;
代码现在可以很好地编译和构建。
- 调试发现它似乎在 lexapp.c 中进入了一个无休止的 while 循环。
相同的代码在 Visual Studio 6 中工作正常。我无法弄清楚为什么我声明yyin
或yyout
会导致问题的方式。是否可以获得与 Visual Studio 2005 相冲突的 lexapp.c 文件,因为我相信我在步骤 4 中所做的更改会导致问题。将不胜感激你们在这里的任何意见。但是,我是 lex & yacc 的新手。
问候,