Compilazione a Cygwin: "EOF" non è stato dichiarato in questo campo di applicazione, compila bene in Centos
Domanda
Sto correndo in questioni che compiono la compilazione delle applicazioni legate a Linux a Cygwin.
Questo errore:
error: ‘EOF’ was not declared in this scope
.
è prodotto dal seguente codice Snippet
if (option == EOF) break;
.
La compilazione di questo in Centos non produce direttamente errori.
Questi sono i parametri G ++ passati dal file Crea:
-g -O0 -Wall -Wextra -std=gnu++11
.
Versione GCC su Centos:
4.8.1 20130715
.
Versione GCC in Cygwin
4.8.2
.
Mi sto chiedendo se mi manca solo alcune librerie a Cygwin, o se questa è solo una limitazione del cygwin e non può essere risolta.
Soluzione
EOF
è definito in stdio.h
/ cstdio
.Ciò che probabilmente sta accadendo è che non sei incluso uno di quelle intestazioni, ma sono incluso, ad esempio, iostream
.Le intestazioni della libreria standard sono autorizzate a causare anche altre intestazioni di essere incluse, e alcune intestazioni iostream
di implementazioni fanno esattamente questo, ma non tutto.Non dovresti fare affidamento su di esso.Se si utilizza EOF
, aggiungere un esplicito includono per l'intestazione appropriata nel proprio codice.(Anche se non è il tuo codice, che non è in questo caso, la modifica richiesta nel codice sorgente è la stessa.)