在Cygwin中编译:'EOF'未在此范围内声明,在CentOS中编译良好

时间:2014-04-13 02:02:20

标签: c++ gcc cygwin g++4.8

我遇到了在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的一个限制而无法解决。

1 个答案:

答案 0 :(得分:4)

EOFstdio.h / cstdio中定义。可能发生的事情是您不包含其中一个标题,但 包括,例如iostream。允许使用标准库标题来引入其他标题,以及一些实现' iostream标题就是这样做的,但不是全部。你不应该依赖它。如果您使用EOF,请在您自己的代码中为相应的标头添加显式包含。 (即使它不是您的代码,在这种情况下也不是,源代码中所需的修改是相同的。)