我在 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, ,在您自己的代码中为适当的标头添加显式包含。(即使它不是您的代码(在本例中不是),源代码中所需的修改也是相同的。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top