istream et ostream problème - C++
Je suis l'aide de deux compilateurs g++ et Dev - C++. quand je compile mon programme sur Dev-C++, il compile parfaitement. mais quand j'essaie de le compiler sur g++ il me donne deux erreurs:
Dans le fichier inclus à partir de a2test.rpc:27: ----.h:25: erreur: 'ostream" n'a pas été déclaré ----.h:26: erreur: 'istream" n'a pas été déclaré
Quelqu'un peut me dire ce que je peux faire pour résoudre ce problème.
Grâce
- Eh bien, au moins un en-tête qui définit ceux inclus?
- C'est vaguement possible que les Dev C++ en-têtes sont de vieux et de mettre ces objets dans l'espace de noms global ou certains
using
déclaration pour eux ou de l'espace destd
. Laid. Il est également possible que le comporte ont une autre hiérarchie, et vous êtes tout simplement attendent ces objets pour être déclaré, parce que vous êtes, y compris certains autres d'en-tête qui est arrivé à les utiliser Dev-C++. Comme Billy dit, vérifiez que vous faites réellement un#include <iostream>
ou<iosfwd>
déclaration. En désespoir de cause, tout juste le préprocesseur étape du compilateur (gcc -E
) souvent donne un aperçu utile de ce qui est inclus. - montrer le code 🙂
Vous devez vous connecter pour publier un commentaire.
Assurez-vous d'inclure fstream. Aussi, mettre "std::" avant ostream ou mettre "using namespace std" quelque part.
Il serait utile si vous avez affiché le code, en tant que droit maintenant, je suis juste deviner les erreurs courantes.
Je suppose que vous avez oublié d'inclure fstream, parce que les différents compilateurs peuvent utiliser différents fichiers d'en-tête et c'est peut être le cas que g++ dispose d'un fichier d'en-tête avec
Alors que Dev-C++ peut avoir
Si vous avez accidentellement importer le bon fichier d'en-tête plutôt que de le faire explicitement.
Pour les fichiers d'en-tête, j'ai juste l'utilisation de ce site quand j'oublie lequel.
ostream - Référence C++
Il semble que vous devez inclure ostream pour obtenir ostream. Probablement la même chose pour istream.
istream
etostream
- disponible à partir de<istream>
et<ostream>
ou ensemble de<iosfwd>
(déclarations) ou<iostream>
(définitions), sans donner de raison d'inclure<fstream>
spécifiquement (qui contient les classes dérivées deistream
etostream
et comprendra donc leurs définitions ainsi que d'autres potentiellement inutiles code).Mon psychique compétences de débogage indiquer que le problème signifie probablement que votre appel à g++ g++ Dev-CPP est l'utilisation de différentes versions de gcc. Un des en-têtes dans la (probablement plus tôt) version incluse avec Dev-CPP pourrait
#include
une norme en-tête C++ qu'il n'a pas besoin d', qui permettraient d'en-têtes qui ne sont pas strictement correct pour compiler.Assurez-vous que vous avez réellement
#include
d<iostream>
, ou<istream>
et<ostream>
, ou<iosfwd>
-- quelques-uns d'en-tête qui comprend en fait ces types de vous.(Note de côté: Merci de ne pas utiliser Dev-CPP -- le projet est assez mort, et l'éditeur s'engage tout à fait un peu de péchés. De Plus il n'est pas un bon éditeur de toute façon. Comment sur Code::Blocks ou Visual Studio (gratuites) à la place?)
ne sais pas si cela va aider, mais d'abord, yuou ne doivent pas oublier d'omettre le ".h" que certains autres compilateurs (MS-C++) d'utiliser, mais pas la norme ANSI/G++.il devrait donc être tout
Deuxièmement, n'oubliez pas :
3rdly, il a été un long moment, mais si je me souviens bien, en g++, th istream et ostream fonctions sont dans le "std" bibliothèque .. si vous pouvez faire quelque chose comme ceci :
ou sinon, vous pouvez les utiliser directement comme ceci :
Espérons que cela vous donnera quelques idées.
.h
. Il sera accepter ce code avec un avertissement, tout comme GCC vous. Aussi, G++ n'est pas plus ANSI que MSVC++.<iostream.h>
est juste plus; à partir avant le C++ a été normalisé. La norme ne l'exige pas d'être là, mais si le compilateur ne les fournissez il n'est pas contraire à la norme. Et si le "point" estusing namespace std;
, alors c'est un mauvais point quand même -- à l'aide deusing namespace std;
est un horrible suggestion.