web-dev-qa-db-fra.com

Comment compiler le code source C ++ (erreur "iostream.h non trouvé")?

Je ne veux pas discuter de C++ ni d'aucun langage de programmation, je veux juste savoir ce que je fais de mal avec Linux Ubuntu à propos de la compilation de helloworld.cpp!

J'apprends le C++ alors mes étapes sont les suivantes:

ouvrez hello.cpp dans vim et écrivez ceci

#include <iostream.h>
int main()
{
    cout << "Hello World!\n";`
    return 0;
}

Donc, après que j’ai essayé dans le terminal cette

g++ hello.cpp

ET la sortie est

hello.cpp:1:22: fatal error: iostream.h: No such file or directory
compilation terminated.

Que suggérez-vous? Un guide utile étape par étape pour moi? Merci!

19
gabriel

Vous devriez utiliser #include <iostream>, pas iostream.h; la forme . h est très ancienne et obsolète depuis des années.

Vous pouvez lire plus que vous ne voulez probablement savoir sur le . H vs non - . H forme ici: http://members.gamedev.net/sicrane/articles/iostream.html

(De plus, vous devriez écrire std::cout ou avoir une ligne using namespace std; sinon votre prochaine erreur concernera le compilateur qui n'a pas trouvé de définition pour cout.)

42
Riccardo Murri

Vous devriez changer iostream.h en iostream. J'obtenais également la même erreur que vous obtenez, mais lorsque j'ai changé iostream.h en iostream, cela a fonctionné correctement. Peut-être que cela fonctionnerait pour vous aussi.

En d'autres termes, changez la ligne qui dit:

#include <iostream.h>

Faites-le dire à la place:

#include <iostream>

Les fichiers d'en-tête de bibliothèque standard C++, tels que définis dans la norme, n'ont pas d'extension .h.

Comme mentionné réponse de Riccardo Murri , vous devrez également appeler cout par son nom qualifié complet std::cout ou avoir l'une de ces deux lignes (de préférence en dessous de vos directives #include mais au-dessus de votre autre code):

using namespace std;
using std::cout;

La deuxième méthode est jugée préférable, en particulier pour les projets de programmation sérieux, car elle n’affecte que std::cout, plutôt que de faire entrer tous les noms dans l’espace de noms std (dont certains pourraient potentiellement interférer avec les noms utilisés dans votre programme).

14
Dhruv kaushik