2010-02-03 12 views
13

Sto provando a eseguire il mio primo programma C++ in linux (linux mint 8). Uso gcc o g ++, entrambi con lo stesso problema: il compilatore non trova la libreria che sto cercando di importare.con collegamento <iostream.h> in linux con gcc

Sospetto che qualcosa come dovrei copiare il file iostream.h (che non so dove cercare) nella cartella di lavoro, spostare il mio file per compilare da qualche altra parte o utilizzare un'opzione di qualche tipo.

Grazie per i vostri suggerimenti.

Ecco il comando gcc, il codice C++, e il messaggio di errore:

gcc -o addition listing2.5.c 

.

#include <iostream.h> 

int Addition(int a, int b) 
{ 
    return (a + b); 
} 

int main() 
{ 
    cout << "Resultat : " << Addition(2, 4) << "\n"; 
    return 0; 
} 

.

listing2.5.c:1:22: error: iostream.h: No such file or directory 
listing2.5.c: In function ‘main’: 
listing2.5.c:10: error: ‘cout’ undeclared (first use in this function) 
listing2.5.c:10: error: (Each undeclared identifier is reported only once 
listing2.5.c:10: error: for each function it appears in.) 

Ora il codice viene compilato, ma non è possibile eseguirlo dalla riga di comando utilizzando il nome del file. addition: command not found Qualche suggerimento?

+0

Sorpresa! Sono andati e hanno cambiato la lingua in modi incompatibili. È stato carino da parte loro. –

+0

@Eric: chi è "loro" e cosa hanno "cambiato"? – MSalters

+0

Non faccio codice in C++ abbastanza spesso per sapere o preoccuparmi di chi è responsabile degli standard C++.Ma una volta ho avuto la stessa esperienza di Morlock, di tornare al C++ dopo molti anni e scoprire che '# includes' non usa più' .h' e 'cin' /' cout' è andato e nascosto all'interno di 'std ::'. –

risposta

22
  • cout è definito nel std :: namespace, è necessario utilizzare std::cout invece di cout.
  • Si dovrebbe anche usare #include <iostream> non il vecchio iostream.h
  • uso g ++ per compilare programmi C++, che sarà anello della C++ libreria standard. gcc non lo farà. gcc compilerà anche il tuo codice come codice C se gli dai un suffisso .c. Dai ai tuoi file un suffisso .cpp.
+0

Thx per la tua risposta. Immagino di buttare via il libro del 2000 con cui sto imparando. :) – Morlock

+0

Hum, il file "aggiunta" creato non funziona. Provo ad usarlo dalla riga di comando, scrivendo: addizione, ma dice "comando non trovato". Ho anche provato a fare clic su di esso e nessun terminale si apre. Come posso farlo funzionare? – Morlock

+1

La directory corrente non è nel tuo percorso. Prova './Addition' – caf

3

È necessario <iostream>, <iostream.h> non intestazione standard troppo vecchio. Prova questo:

#include <iostream> 

int Addition(int a, int b) 
{ 
    return (a + b); 
} 

int main() 
{ 
    using namespace std; 
    cout << "Resultat : " << Addition(2, 4) << "\n"; 
    return 0; 
} 
5

È necessario <iostream> non <iostream.h>.

Sono anche file di intestazione non librerie.

Altre cose da risolvere, cout devono essere std::cout e si dovrebbe usare std::endl anziché "\n".

+4

No, usare' "\ n" 'è meglio. Penso che tu sappia che 'std :: endl' scarica anche lo stream. – AraK

+0

Thx per eliminare la confusione con std :: endl AraK – Morlock

1

utilizzare g ++ non gcc per compilarlo

+2

È davvero necessario fornire più informazioni di questo. (Perché g ++ dovrebbe essere usato per esempio.) –

+0

g ++ e gcc è lo stesso compilatore ma con un frontend diverso. Una di queste differenze è che g ++ con link con librerie standard C++ (come che stai usando) e non il frontend di gcc. –

1

Se non si desidera utilizzare std fianco cout AS

std::cout << "Hello World";

È inoltre possibile definire std all'inizio del programma 'utilizzando namespace 'parole chiave AS

 #include <iostream > 

    using namespace std; 

    int Addition(int a, int b) 
    { 
     return (a + b); 
    } 

    int main() 
    { 
     cout << "Result : " << Addition(2, 4) << "\n"; 
     return 0; 
    } 

Ora non c'è bisogno di scrivere std, everytim e usi le operazioni di I/O.

Problemi correlati