Kompilieren in Cygwin:„EOF“ wurde in diesem Bereich nicht deklariert, lässt sich in CentOS problemlos kompilieren

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

  •  21-12-2019
  •  | 
  •  

Frage

Ich habe Probleme beim Kompilieren von Linux-gebundenen Anwendungen in Cygwin.

Dieser Fehler:

error: ‘EOF’ was not declared in this scope

wird durch den folgenden Codeausschnitt erzeugt

if (option == EOF) break;

Das direkte Kompilieren in CentOS führt zu keinen Fehlern.

Dies sind die von der Make-Datei übergebenen g++-Parameter:

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

GCC-Version auf CentOS:

 4.8.1 20130715

GCC-Version in Cygwin

 4.8.2

Ich frage mich, ob mir nur einige Bibliotheken in Cygwin fehlen oder ob dies nur eine Einschränkung von Cygwin ist und nicht behoben werden kann.

War es hilfreich?

Lösung

EOF ist definiert in stdio.h / cstdio.Was wahrscheinlich passiert, ist, dass Sie keinen dieser Header einfügen, aber Sind darunter zum Beispiel iostream.Standardbibliotheksheader dürfen dazu führen, dass auch andere Header einbezogen werden, und einige Implementierungen iostream Header machen genau das, aber nicht alle.Darauf sollte man sich nicht verlassen.Wenn du benutzt EOF, fügen Sie ein explizites Include für den entsprechenden Header in Ihrem eigenen Code hinzu.(Auch wenn es nicht Ihr Code ist, was in diesem Fall nicht der Fall ist, ist die im Quellcode erforderliche Änderung dieselbe.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top