Come compilare il codice sorgente C ++ (errore "iostream.h non trovato")?

18

Non voglio discutere di C ++ o di qualsiasi linguaggio di programmazione! Voglio solo sapere cosa sto sbagliando con linux ubuntu sulla compilazione di helloworld.cpp!

Sto imparando C ++ quindi i miei passi sono:

apri hello.cpp in vim e scrivi questo

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

Quindi, dopo che ho provato nel terminale questo

g++ hello.cpp

E l'output è

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

Che cosa suggerisci? Qualche utile guida passo dopo passo per me? Grazie!

    
posta gabriel 03.05.2012 - 15:44

2 risposte

40

Dovresti usare #include <iostream> , non iostream.h ; il modulo .h è molto vecchio e deprecato da anni.

Puoi leggere più di quanto probabilmente vorresti sapere sui moduli .h vs non- .h qui: link

(Inoltre, dovresti scrivere std::cout o avere una riga using namespace std; altrimenti il ​​tuo prossimo errore sarà sul compilatore che non trova una definizione per cout .)

    
risposta data Riccardo Murri 03.05.2012 - 15:53
14

Dovresti cambiare iostream.h in iostream . Avevo anche lo stesso errore che hai ricevuto, ma quando ho cambiato iostream.h in appena iostream , ha funzionato correttamente. Forse funzionerebbe anche per te.

In altre parole, cambia la linea che dice:

#include <iostream.h>

Diciamo questo invece:

#include <iostream>

I file di intestazione della libreria standard C ++, come definiti nello standard, non hanno estensioni .h .

Come menzionato la risposta di Riccardo Murri , dovrai chiamare anche cout con il suo nome completo std::cout , o avere una di queste due linee (preferibilmente al di sotto delle direttive #include ma superiori al tuo altro codice):

using namespace std;
using std::cout;

Il secondo modo è considerato preferibile, specialmente per progetti di programmazione gravi, poiché riguarda solo std::cout , piuttosto che inserire tutti i nomi nello spazio dei nomi std (alcuni dei quali potrebbero interferire con i nomi utilizzati nel programma ).

    
risposta data Dhruv kaushik 26.09.2012 - 17:28

Leggi altre domande sui tag