Compilazione a Cygwin: "EOF" non è stato dichiarato in questo campo di applicazione, compila bene in Centos

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

  •  21-12-2019
  •  | 
  •  

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.

È stato utile?

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.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top