Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema con iostream ed il gcc
Forum - C/C++ - Problema con iostream ed il gcc

Avatar
Gabry (Normal User)
Rookie


Messaggi: 36
Iscritto: 19/04/2011

Segnala al moderatore
Postato alle 16:53
Giovedì, 10/05/2012
Premetto che programmo in C++ da poco e per motivi scolastici mentre il C ed altri linguaggi li conosco decentemente. Il mio OS è Ubuntu 12 ed il mio compiulatore il gcc. Il programma è questo
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. main(){
  6.   int a,b,c;
  7.   cout<<"Inserisci A: ";
  8.   cin>>a;
  9.   cout<<"Inserisci B: ";
  10.   cin>>b;
  11.   cout<<"Inserisci C: ";
  12.   cin>>c;
  13.   int max=a;
  14.   if (b>max) max = b;
  15.   if (c>max) max = c;
  16.   cout<<max<<"\n\n";
  17. }


Appena provo a compilarlo il messaggio è il seguente
Codice sorgente - presumibilmente VB.NET

  1. Massimo.cpp:5:6: warning: ISO C++ forbids declaration of ‘main’ with no type [-Wreturn-type]
  2. /tmp/ccFaS7rV.o: In function `main':
  3. Massimo.cpp:(.text+0xe): undefined reference to `std::cout'
  4. Massimo.cpp:(.text+0x13): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
  5. Massimo.cpp:(.text+0x1f): undefined reference to `std::cin'
  6. Massimo.cpp:(.text+0x24): undefined reference to `std::basic_istream<char, std::char_traits<char> >::operator>>(int&)'
  7. Massimo.cpp:(.text+0x2e): undefined reference to `std::cout'
  8. Massimo.cpp:(.text+0x33): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
  9. Massimo.cpp:(.text+0x3f): undefined reference to `std::cin'
  10. Massimo.cpp:(.text+0x44): undefined reference to `std::basic_istream<char, std::char_traits<char> >::operator>>(int&)'
  11. Massimo.cpp:(.text+0x4e): undefined reference to `std::cout'
  12. Massimo.cpp:(.text+0x53): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
  13. Massimo.cpp:(.text+0x5f): undefined reference to `std::cin'
  14. Massimo.cpp:(.text+0x64): undefined reference to `std::basic_istream<char, std::char_traits<char> >::operator>>(int&)'
  15. Massimo.cpp:(.text+0x90): undefined reference to `std::cout'
  16. Massimo.cpp:(.text+0x95): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(int)'
  17. Massimo.cpp:(.text+0xa2): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
  18. /tmp/ccFaS7rV.o: In function `__static_initialization_and_destruction_0(int, int)':
  19. Massimo.cpp:(.text+0xd0): undefined reference to `std::ios_base::Init::Init()'
  20. Massimo.cpp:(.text+0xd5): undefined reference to `std::ios_base::Init::~Init()'
  21. collect2: ld returned 1 exit status


provando a togliere le riga "using namespace std;" ottengo un altro errore:
Codice sorgente - presumibilmente Delphi

  1. Massimo.cpp:3:6: warning: ISO C++ forbids declaration of ‘main’ with no type [-Wreturn-type]
  2. Massimo.cpp: In functionint main():
  3. Massimo.cpp:5:3: error: ‘cout’ was not declared in this scope
  4. Massimo.cpp:5:3: note: suggested alternative:
  5. /usr/include/c++/4.6/iostream:62:18: note:   ‘std::cout’
  6. Massimo.cpp:6:3: error: ‘cin’ was not declared in this scope
  7. Massimo.cpp:6:3: note: suggested alternative:


la libreria iostream serve per le funzioni cin e cout. Come detto conosco il C e non avrei problemi personalmente ad usare printf e scanf, ma il mio professore non credo capisca molto l'argomento (provate a spiegargli cos'è Linux...) e quindi vuole proprio che si faccia a modo suo.
Quindi come faccio a includere iostream e compagnia bella?

PM Quote
Avatar
RiccardoG97 (Member)
Pro


Messaggi: 133
Iscritto: 03/01/2012

Segnala al moderatore
Postato alle 17:44
Giovedì, 10/05/2012
Prova con questo codice:
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2.  
  3. int main ( void )
  4. {
  5.     int a, b, c;
  6.  
  7.     std::cout << "Inserisci A: ";
  8.     std::cin >> a;
  9.  
  10.     std::cout << "Inserisci B: ";
  11.     std::cin >> b;
  12.  
  13.     std::cout << "Inserisci C: ";
  14.     std::cin >> c;
  15.  
  16.     int max = a;
  17.    
  18.     if ( max < b )
  19.         max = b;
  20.  
  21.     if ( max < c )
  22.         max = c;
  23.  
  24.     std::cout << "Il numero massimo è: " << max;
  25.  
  26.     return 0;
  27. }



Dimmi se funziona... a me funge :k:

PM Quote
Avatar
Gabry (Normal User)
Rookie


Messaggi: 36
Iscritto: 19/04/2011

Segnala al moderatore
Postato alle 17:58
Giovedì, 10/05/2012
Codice sorgente - presumibilmente VB.NET

  1. /tmp/ccxgby6t.o: In function `main':
  2. Massimo.cpp:(.text+0xe): undefined reference to `std::cout'
  3. Massimo.cpp:(.text+0x13): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
  4. Massimo.cpp:(.text+0x1f): undefined reference to `std::cin'
  5. Massimo.cpp:(.text+0x24): undefined reference to `std::basic_istream<char, std::char_traits<char> >::operator>>(int&)'
  6. Massimo.cpp:(.text+0x2e): undefined reference to `std::cout'
  7. Massimo.cpp:(.text+0x33): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
  8. Massimo.cpp:(.text+0x3f): undefined reference to `std::cin'
  9. Massimo.cpp:(.text+0x44): undefined reference to `std::basic_istream<char, std::char_traits<char> >::operator>>(int&)'
  10. Massimo.cpp:(.text+0x4e): undefined reference to `std::cout'
  11. Massimo.cpp:(.text+0x53): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
  12. Massimo.cpp:(.text+0x5f): undefined reference to `std::cin'
  13. Massimo.cpp:(.text+0x64): undefined reference to `std::basic_istream<char, std::char_traits<char> >::operator>>(int&)'
  14. Massimo.cpp:(.text+0x90): undefined reference to `std::cout'
  15. Massimo.cpp:(.text+0x95): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
  16. Massimo.cpp:(.text+0xa2): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(int)'
  17. /tmp/ccxgby6t.o: In function `__static_initialization_and_destruction_0(int, int)':
  18. Massimo.cpp:(.text+0xd0): undefined reference to `std::ios_base::Init::Init()'
  19. Massimo.cpp:(.text+0xd5): undefined reference to `std::ios_base::Init::~Init()'
  20. collect2: ld returned 1 exit status


:_doubt::d:(

PM Quote
Avatar
XBarboX (Member)
Guru


Messaggi: 945
Iscritto: 31/12/2008

Segnala al moderatore
Postato alle 19:33
Giovedì, 10/05/2012
Allora un codice C++ si compila con g++ e non gcc. gcc è per il c.
Poi hai fatto un piccolo errore, hai dimenticato "int " davanti a main.
Compila così con g++:
g++ file.cpp -o file.out

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main(){
  5.   int a,b,c;
  6.   cout<<"Inserisci A: ";
  7.   cin>>a;
  8.   cout<<"Inserisci B: ";
  9.   cin>>b;
  10.   cout<<"Inserisci C: ";
  11.   cin>>c;
  12.   int max=a;
  13.   if (b>max) max = b;
  14.   if (c>max) max = c;
  15.   cout<<max<<"\n\n";
  16. }


PM Quote
Avatar
Gabry (Normal User)
Rookie


Messaggi: 36
Iscritto: 19/04/2011

Segnala al moderatore
Postato alle 20:20
Giovedì, 10/05/2012
proverò con il g++. Grazie mille.:k:

ps
Quello dell'int davanti al main lo sapevo, ma il prof aveva detto di fare così...

PM Quote
Avatar
Gabry (Normal User)
Rookie


Messaggi: 36
Iscritto: 19/04/2011

Segnala al moderatore
Postato alle 20:25
Giovedì, 10/05/2012
Ora ho provato e va tutto bene. Compilazione perfietta. :hail:8-)

PM Quote