La compilation dans Cygwin:'EOF' n'a pas été déclarée dans ce cadre, compile bien dans CentOS
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.
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.)