Компиляция в Cygwin:'EOF' не был объявлен в этой области, нормально компилируется в CentOS

StackOverflow https://stackoverflow.com//questions/23038295

  •  21-12-2019
  •  | 
  •  

Вопрос

Я сталкиваюсь с проблемами при компиляции приложений, привязанных к Linux, в Cygwin.

Эта ошибка:

error: ‘EOF’ was not declared in this scope

создается с помощью следующего фрагмента кода

if (option == EOF) break;

Компиляция этого в CentOS напрямую не приводит к ошибкам.

Это параметры g++, передаваемые файлом make:

-g -O0 -Wall -Wextra -std=gnu++11

Версия GCC на CentOS:

 4.8.1 20130715

Версия GCC в Cygwin

 4.8.2

Мне интересно, просто ли мне не хватает некоторых библиотек в Cygwin, или это просто ограничение Cygwin и оно не может быть устранено.

Это было полезно?

Решение

EOF определяется в stdio.h / cstdio.Скорее всего, происходит то, что вы не включаете ни один из этих заголовков, но являются включая, например, iostream.Заголовкам стандартных библиотек разрешено вызывать включение других заголовков, а также некоторых реализаций' iostream заголовки делают именно это, но не все.Вы не должны полагаться на это.Если вы используете EOF, добавьте явное включение для соответствующего заголовка в свой собственный код.(Даже если это не ваш код, а в данном случае это не так, требуемые изменения в исходном коде те же самые.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top