Newsgroup: it.comp.os.linux.development
Titolo: Non riesco a compilare sotto Linux !!

Stò studiando il libro di Lippmann...perchè sotto Linux il g++ non mi fà
compilare questo semplice programma ?....con Dev-c++ funziona tutto
correttamente !!
La distro è un RH 7.2...ho anche scaricato il gcc3 ma niente.
Come faccio a compilare senza problemi con Linux ?...e poi il g++ non
dovrebbe essere quanto di più vicino allo standard ?
grazie in anticipo
Alessandro
________________
Di seguito il programmino:
#include <iostream>
#include <fstream>
#include <string>
int main()
{
    ofstream outfile ( "out_file" );
    ifstream infile ( "in_file" );
if  ( ! infile) {
    cerr << "errore: imposibile aprire il file di Input\n";
return -1;
}
if  ( ! outfile) {
    cerr << "errore: imposibile aprire il file di Output\n";
return -2;
}
string parola;
while ( infile >>parola)
        outfile << parola <<  ' ';
return 0;
}

 dovrebbe essere quanto di piů vicino allo standard ?
Il mio g++ compila senza errori (versione 2.95.4).
Che messaggio di errore ti restituisce?
-- 
Saluti,
    Mardy
http://castellina.org/interlingua


Compilando il codice riportato sotto....mi dà questo errore:
root#gcc3 prova.cc
prova.cc: In function `int main()':
prova.cc:9: `in_file' undeclared (first use this function)
prova.cc:9: (Each undeclared identifier is reported only once for each
function it appears in.)
prova.cc:13: `out_file' undeclared (first use this function)
Come faccio  a non avere più problemi ?...ho aggiuntoanche namespace std;
Ciao
Alessandro
________
CODICE
#include <iostream>
#include <fstream>
#include <string>
using namespace std;


 prova.cc:9: `in_file' undeclared (first use this function)
Uhm... "in_file" e "out_file" (con l'_) appaiono solo come letterali
stringa e *non* alle righe 9 e 13. Sei sicuro che il codice sotto sia
proprio quello di prova.cc?
Max



Si..il codice è quello, solo che in quello riportato nel messaggio come puoi
vedere ci sono degli spazi...se li togli comunque il risultato non
cambia...dice semplicemente la giusta riga !
Ciao Alessandro
P.S.: Possibile che sono l'unico sfigato che studia il liro di Lippmann
sotto Linux ?
Il fatto è che sul portatile ho solo quello !

 root#gcc3 prova.cc
Con copy and paste del tuo codice su ba.cpp, g++ ba.cpp qui funzia
senza colpo ferire.  2.96.  gcc -c ba.cc (rinominato il file) pure
funzia, anche se linkare ovviamente richiede allora uno switch.
c++-3.0.4 ba.cc funziona altrettanto bene.  Insomma, riprodurre il
tuo problema sembra impossibile su questa Mandrake 8.2.
Alex

 cambia...dice semplicemente la giusta riga !
Mi pare impossibile. Alla riga 9 devi aver scritto "in_file" col
trattino, altrimenti non si spiega l'errore.



Io uso una RH 7.2 e guardando l'RPM la versione del gcc3 è la 3.0.1
...mi dà gli errori prima riportati....sfogliando miriadi di msg precedenti
sembra che sia un problema della <string>
Io non ho fatto altro che lanciare g++3 prova.cc ....il codice è così
semplice che NON PUO' non compilare...in più oradevo andare via per lavoro e
sul portatile ho solo Linux.....ora provo ad aggiornare il gcc ancora...non
mi rimane che quello !
Ciao
Alessandro


Sono due giorni che guardo il sorgente PREGANDO di trovare un errore del
genere :-))
Ciao
Alessandro

Ho trovato l'errore...porca puttŁ%$&% !!!
avevo fatto due file per la prova.....uno di questi era cosě:
if  ( ! in_file) {
if  ( ! out_file) {
...mentre sia sul messaggio che ho postato che sull'altro file era
corretto...solo che richiamando sempre il file con l'history usavo quello di
cui sopra che č sbagliato !..infatti  le dichiarazioni ofstream e ifstream
erano:
 ofstream outfile ( "out_file" );
 ifstream infile ( "in_file" );
...scusate chiedo perdono :-))  ....mi stŕ bene cosě imparo a chiamare il
primo "Prova.cc" e il secondo "prova.cc"
Ciao Alessandro

 e poi il g++ non dovrebbe essere quanto di piu` vicino allo standard ?
Appunto. Sulle vecchie versioni  funziona, ma questo codice,  a rigor di
standard,  e` scorretto.  ofstream,  ifstream, cerr,  string stanno  nel
namespace std!
Per compilare aggiungi:
using namespace std;
oppure usa il prefisso std::
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"Chi parla in tono cortese, ma continua a prepararsi, potra` andare avanti;
 chi parla in tono bellicoso e avanza rapidamente dovra` ritirarsi" 
Sun Tzu -- L'arte della guerra