Pourquoi ne peut-g++ trouver iostream.h?
J'essaie de comprendre comment compiler des programmes C++ à partir de la ligne de commande à l'aide de g++ et (éventuellement) Clang sur Ubuntu.
J'ai trouvé une page qui explique les MakeFiles et je suis à la suite de leurs directions. http://mrbook.org/tutorials/make/
J'ai téléchargé les quatre exemples de fichiers dans leur propre répertoire.
- main.cpp
- hello.cpp
- factorial.cpp
- fonctions.h
Ensuite, je suis allé de l'avant et a couru à leur exemple de la façon de compiler à la main sans un MakeFile.
g++ main.cpp hello.cpp factorial.cpp -o hello
Lorsque j'ai exécuté la commande à partir de ci-dessus, j'ai reçu l'erreur suivante à partir de g++:
main.cpp:1:22: fatal error: iostream.h: No such file or directory
compilation terminated.
hello.cpp:1:22: fatal error: iostream.h: No such file or directory
compilation terminated.
Ma seule expérience avec l'écriture de c++ est d'utiliser un IDE comme VS C++ Express ou CodeBlocks. N'est-ce pas le compilateur censé savoir ce que iostream.h est, et où les trouver?
Comment puis-je me débarrasser de cette erreur afin que le programme willl compiler?
Merci pour toute aide.
- Il n'y a pas de
iostream.h
, c'est justeiostream
. - Vraiment? Ainsi, lorsque le tutoriel fichiers de dire
#include <iostream.h>
il faut dire#include <iostream>
? - Eh bien, le tutoriel est probablement assez vieux qu'il était valable que lorsqu'il a été écrit.
- Le tutoriel des liens vers les documents pour une version (3.79.1) qui a été publié le 23 juin 2000. Vous pourriez envisager de trouver un nouveau tutoriel.
- wow... pouvez-vous recommander une nouvelle tut?
- Débarrassez-vous de votre tutoriel.
- Comme un didacticiel pour l'apprentissage, il semble bien pour moi. Ce n'est que le C++ qui est le problème, et vous devriez apprendre qu'à partir d'une source distincte de toute façon.
- Pour les autres: gnu.org/software/make/manual/make.html
- Double Possible de iostream.h, fstream.h ne peut pas être trouvé
Vous devez vous connecter pour publier un commentaire.
Avant le langage C++ a été normalisé par l'ISO, le fichier d'en-tête a été nommé
<iostream.h>
, mais quand le C++98 standard a été libéré, il a été renommé à juste<iostream>
(sans le.h
). Modifier le code pour utiliser#include <iostream>
à la place, et il doit compiler.Vous devez également ajouter un
using namespace std;
déclaration pour chaque fichier source (ou préfixe de chaque référence à un iostream fonction/objet avec unstd::
prescripteur), puisque les espaces de noms n'existent pas dans la pré-normalisé C++. C++98 mettre de la bibliothèque standard les fonctions et les objets à l'intérieur de lastd
espace de noms.<iostream.h>
, mais c'était avant même les espaces de noms ont été introduites.<iostream.h>
. Le.h
formes de C++ noms d'en-tête est venu à partir de la pré-norme de jours de cfront, Glockenspiel C++, Comeau, Zortech, et Borland. Le C++98 standard supprimé le suffixe et de mettre tous les noms dans l'espace de nomsstd
. Certaines implémentations de toujours fournir la.h
en-têtes pour la compatibilité descendante.<iostream.h>
n'a jamais été une norme en-tête C++, car il n'est pas dans la norme C++.Au lieu de cela nous avons eu
<iostream>
, en 1998.Steer claire de matériel pédagogique à l'aide de la non-standard des choses telles que les
<iostream.h>
ouvoid main
.Cependant, comme la solution pratique pour votre pré-code standard, vous pouvez essayer de remplacer
avec
Il n'est pas garanti pour fonctionner, mais les chances sont qu'il va travailler.
using namespace std;
et ajouterstd::
en face de la normalisation des noms.Une autre question qui n'a pas été mentionné ici, donc je vais l'inclure pour toute référence future, est à partir de la ligne de commande du compilateur a besoin de la variable d'environnement path mis à jour pour trouver l'emplacement des fichiers d'en-tête c++. Dans windows, vous pouvez simplement mettre à jour le chemin d'accès de l'environnement à l'aide de la 'avancé' propriétés système' interface graphique et d'ajouter de l'emplacement du c++ fichiers à inclure. Cela permettra de mettre à jour la variable d'environnement PATH de Windows cmd & Cygwin automatiquement lors du redémarrage de la coquille.
De mettre à jour votre CHEMIN à partir de Linux ou Cygwin shell de type...
PATH=$PATH:/your_path_here
Exemple:PATH=$PATH:/cygdrive/c/cygwin/lib/gcc/i686-pc-mingw32/4.7.3/include/c++
Aussi une bonne idée d'ajouter le répertoire include ainsi:
PATH=$PATH:/cygdrive/c/cygwin/lib/gcc/i686-pc-mingw32/4.7.3/include/
...ou vérifier les répertoires appropriés pour l'emplacement de votre installation d'inclure des fichiers, je recommande l'installation de mingw pour une utilisation avec Cygwin, qui est envoked avec g++.
Installer d'autres paquets nécessaires dans Cygwin ré-exécuter l'utilitaire d'installation de Cygwin & vérifiez l'installation à partir d'Internet pour ajouter des packages à partir de référentiels web et ajouter mingw-gcc-g++ & mingw-binutils.
Pour compiler: g++ hello.cpp -o bonjour
Si à l'aide de la gcc d'utilité au lieu de compiler avec la commande:
gcc hello.cpp -o hello-lstdc++
... pour obtenir votre exécutable.
Aussi longtemps que vous avez ou mingw gcc installé et le chemin vers le c++ inclure des fichiers dans votre variable d'environnement path, les commandes de travail.