Compilando no Cygwin:'EOF' não foi declarado neste escopo, compila bem no CentOS
Pergunta
Estou tendo problemas ao compilar aplicativos vinculados ao Linux no Cygwin.
Esse erro:
error: ‘EOF’ was not declared in this scope
é produzido pelo seguinte trecho de código
if (option == EOF) break;
Compilar isso diretamente no CentOS não produz erros.
Estes são os parâmetros g++ passados pelo arquivo make:
-g -O0 -Wall -Wextra -std=gnu++11
Versão GCC no centOS:
4.8.1 20130715
Versão GCC no Cygwin
4.8.2
Estou me perguntando se estou faltando algumas bibliotecas no Cygwin ou se isso é apenas uma limitação do Cygwin e não pode ser resolvido.
Solução
EOF
é definido em stdio.h
/ cstdio
.O que provavelmente está acontecendo é que você não está incluindo um desses cabeçalhos, mas são incluindo, por exemplo, iostream
.Cabeçalhos de biblioteca padrão podem fazer com que outros cabeçalhos também sejam incluídos, e algumas implementações iostream
os cabeçalhos fazem exatamente isso, mas não todos.Você não deveria confiar nisso.Se você usar EOF
, adicione uma inclusão explícita para o cabeçalho apropriado em seu próprio código.(Mesmo que não seja o seu código, o que não é neste caso, a modificação necessária no código-fonte é a mesma.)