La compilation dans Cygwin:'EOF' n'a pas été déclarée dans ce cadre, compile bien dans CentOS

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

  •  21-12-2019
  •  | 
  •  

Question

Je suis en cours d'exécution sur les questions de la compilation de Linux, les applications liées à Cygwin.

Cette erreur:

error: ‘EOF’ was not declared in this scope

est produite par l'extrait de code suivant

if (option == EOF) break;

La compilation de ce dans CentOS directement produit pas d'erreurs.

Ce sont les g++ params passé par le fichier de créer:

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

La version de GCC sur centOS:

 4.8.1 20130715

La version de GCC dans Cygwin

 4.8.2

Je me demande si je suis juste en manque quelques bibliothèques dans Cygwin, ou si c'est juste une limitation de Cygwin, et ne peuvent pas être résolus.

Était-ce utile?

La solution

EOF est défini dans stdio.h / cstdio.Ce qui est probablement ce qui se passe est que vous n'avez pas compris l'un de ces en-têtes, mais sont y compris, par exemple, iostream.La bibliothèque Standard les en-têtes sont autorisés à provoquer les autres en-têtes pour obtenir inclus en tant que bien, et certaines implémentations' iostream les en-têtes de faire exactement cela, mais pas tous.Vous ne devriez pas compter sur elle.Si vous utilisez EOF, ajouter une explicite pour inclure l'en-tête approprié dans votre propre code.(Même si ce n'est pas votre code, ce qui n'est pas dans ce cas, la modification dans le code source est la même.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top