在 Cygwin 中编译:'EOF' 未在此范围内声明,在 CentOS 中编译良好
题
我在 Cygwin 中编译 Linux 绑定应用程序时遇到问题。
这个错误:
error: ‘EOF’ was not declared in this scope
由以下代码片段生成
if (option == EOF) break;
直接在 CentOS 中编译不会产生任何错误。
这些是 make 文件传递的 g++ 参数:
-g -O0 -Wall -Wextra -std=gnu++11
centOS 上的 GCC 版本:
4.8.1 20130715
Cygwin 中的 GCC 版本
4.8.2
我想知道我是否只是缺少 Cygwin 中的一些库,或者这是否只是 Cygwin 的限制并且无法解决。
解决方案
EOF
定义于 stdio.h
/ cstdio
. 。可能发生的情况是您没有包含这些标头之一,但是 是 包括,例如, iostream
. 。标准库标头也允许包含其他标头,并且某些实现' iostream
标头正是这样做的,但不是全部。你不应该依赖它。如果你使用 EOF
, ,在您自己的代码中为适当的标头添加显式包含。(即使它不是您的代码(在本例中不是),源代码中所需的修改也是相同的。)
不隶属于 StackOverflow