Compilando en Cygwin:'EOF' no fue declarado en este ámbito, se compila bien en CentOS
Pregunta
Tengo problemas al compilar aplicaciones vinculadas a Linux en Cygwin.
Este error:
error: ‘EOF’ was not declared in this scope
es producido por el siguiente fragmento de código
if (option == EOF) break;
Compilar esto en CentOS directamente no produce errores.
Estos son los parámetros de g++ pasados por el archivo make:
-g -O0 -Wall -Wextra -std=gnu++11
Versión de GCC en centOS:
4.8.1 20130715
Versión GCC en Cygwin
4.8.2
Me pregunto si simplemente me faltan algunas bibliotecas en Cygwin o si esto es solo una limitación de Cygwin y no se puede resolver.
Solución
EOF
se define en stdio.h
/ cstdio
.Lo que probablemente sucede es que no estás incluyendo uno de esos encabezados, pero son incluyendo, por ejemplo, iostream
.Se permite que los encabezados de biblioteca estándar hagan que también se incluyan otros encabezados, y algunas implementaciones iostream
los encabezados hacen exactamente esto, pero no todo.No deberías confiar en ello.Si utiliza EOF
, agregue una inclusión explícita para el encabezado apropiado en su propio código.(Incluso si no es su código, que no lo es en este caso, la modificación requerida en el código fuente es la misma).