Newsgroup: it.comp.os.linux.development
Titolo: cout impazzito

Dopo varie peripezie, ho quasi finito il mio parser, cosi' prima 
d'eseguirlo 
ci metto un bel mess iniziale tanto per scrivere qualcosa sulla console:
std::cout << "Mess di benvenuto del prog\n" ;
tanto per scrivere qualcosa.
Non l'avessi mai fatto, il linker questa volta mi tira fuori un errore che 
non s'era mai visto. 
/tmp/cc0OxVgZ.o(.text+0xe): undefined reference to `cout'
/tmp/cc0OxVgZ.o(.text+0x13): undefined reference to 
`ostream::operator<<(int)'
Lo stesso (ed e' qui che mi sono sconvolto) succede se provo a compilare un 
vecchio hello.C (il classico hello world). Insomma cout (ma anche cin) 
sembra 
non voler funzionare +. Conscio del fatto che si possa trattare del mio 
solito errore di distrazione (passo il 50% del tempo a correggere ";" 
dimenticati, o errori d'ortografia) ho copiato paro paro dal solito libro 
di 
stroupstrup un esempio di codice...niente, neanche quello voleva 
compilarsi..stesso errore.
Al solito, mi scuso se si tratta di un'idiozia (cmq, chi lo sa, magari 
possono essere d'aiuto anche ad altri queste mail da un newbie 
disgraziato:) )
Grazie,
Giulio

 non s'era mai visto. 
Provato con g++ nomeProg.c -o nomeProg ?
gcc digerisce molto malamente il codice C++ :-)
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
ho provato, e infatti funziona :) 
non ho ancora capito quale sia la differenza tra gcc e g++, io pensavo che 
il primo richiamasse il secondo quando si trattava di file con estensione 
.cpp o .C (mi sembrava ovvio), eppure soprattutto a livello di linking gcc 
impazzisce, conosci qualche doc a proposito? (l'ho chiesto molto in giro, 
pero' nn ho ricevuto risposte)
GIulio

[snip]
Hai forse usato gcc invece di g++
#include <iostream>
int main() {
	std::cout << "hello wrold" <<std::endl;
}
Se usi gcc:
/tmp/ccVd254G.o: In function `main':
/tmp/ccVd254G.o(.text+0xa): undefined reference to `endl(ostream &)'
/tmp/ccVd254G.o(.text+0x17): undefined reference to `cout'
/tmp/ccVd254G.o(.text+0x1c): undefined reference to `ostream::operator<<(char const *)'
/tmp/ccVd254G.o(.text+0x27): undefined reference to `ostream::operator<<(ostream &(*)(ostream &))'
collect2: ld returned 1 exit status
Se usi g++
hello wrold
:)
byez
-- 
David Mugnai
There are two ways to write error-free programs. Only the third one works.

 non ho ancora capito quale sia la differenza tra gcc e g++, io pensavo che 
g++ richiama gcc passandogli direttamente le opzioni per le librerie standard 
del C++
bye
-- 
David Mugnai
To err is human...to really foul up requires the root password.

 pero' nn ho ricevuto risposte)
Da quel poco che conosco gcc, se dai l'estensione .cpp interpreta il
programma con la sintassi del "C++", ma il codice deve essere "C".
Tanto per essere chiari.
Il codice seguente
#include <stdio.h>
void f();
int main()
{
 
   f(30);
   return 0;
}
void f(int pInt)
{
   printf("il valore passato e\' %d\n", pInt);
}
viene compilato se il sorgente ha estensione ".c", non viene compilato
se ha estensione ".C" ".cpp" ".cxx" e cosi via.
Ma se nel sorgente ci sono classi o costrutti tipici del C++ gcc
fallisce la compilazione.
E' probabile che mi sbagli.
In ogni caso il manuale del gcc lo puoi trovare al seguente URL
http://www.gnu.org/software/gcc/onlinedocs/


 conosci qualche doc a proposito?
info gcc
        Mauro

.cpp o .C (mi sembrava ovvio)
E' l'esatto contrario ;-) g++ richiama gcc con i parametri corretti.
Puoi usare anche il gcc, ma devi passargli gli include C++ std, la
libstdc++, e forse anche qualcos'altro che g++ fa per te.
Quindi usa g++ e sarai felice! ;-)
-- 
+---- | Un OS per domarli, Un OS per trovarli,             |  -o)
+---+ | Un OS per ghermirli e nel buio incatenarli         |  /\\
 O  | | Nella terra di Redmond, ove l'ombra cupa scende... | _\_V
                    raffaele punto salmaso presso libero punto it