- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 Visual Studio 2005 中运行程序时遇到一个奇怪的问题。解释我在做什么:
在 lexapp.c 中出错(这是在我将 app.l 文件提供给 Unix 机器后生成的 C 文件)
错误 - 初始化器不是常量
FILE *yyin = {stdin}, *yyout = {stdout};
将上面的代码改成
FILE *yyin, *yyout;
并将以下代码放入yylex()
yyin = 标准输入; yyout = stdout;
代码现在可以很好地编译和构建。
相同的代码在 Visual Studio 6 中运行良好。我无法弄清楚为什么我声明 yyin
或 yyout
的方式会导致问题。是否有可能获得一个与 Visual Studio 2005 兼容的 lexapp.c 文件,因为我相信我在第 4 步中所做的更改导致了问题。非常感谢你们在这里的任何意见。但是,我是 lex 和 yacc 的新手。
问候,
最佳答案
VC++中的“编译为C”相当于gcc中的“-std=C89”,其中gcc通常编译为GNU99(C99扩展)。当前的 C 标准是 C11。 VC++ 的“编译为 C”缺少 C99 和 C11 添加的功能。当配置为“编译为 C”时,我会将其视为过时的 C 编译器,或者当配置为“编译为 C++”时,我会将其视为最新的 C++ 编译器。这解释了为什么用 gcc 编译的代码可能不能用 MSVC++ 编译。我建议原始代码使用了 MSVC++ 的 C89 支持中没有的 C99 功能。
解决方案是将 C99 代码转换为等效的 C89 代码,您似乎已经这样做(或开始这样做),或者使用 C99/C11 编译器(例如 gcc)编译它。
关于c - Visual Studio 2005 中 lexapp.c 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15570328/
我在 Visual Studio 2005 中运行程序时遇到一个奇怪的问题。解释我在做什么: 项目在 Visual Studio 6 中 将项目转换为 Visual Studio 2005 在 lex
我是一名优秀的程序员,十分优秀!