2

我在 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 的限制并且无法解决。

4

1 回答 1

4

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

于 2014-04-13T02:13:48.080 回答