Newsgroup: it.comp.lang.c++
Titolo: Problemi di porting

Sto sviluppando un programma che sotto linux compila e gira 
senza problemi. Adesso devo iniziare a curare la portabilita'
del codice ed iniziano i dolori....
Attualmente sono sotto solaris e se lancio la compilazione
ho il seguente problema:
In file included from compass.h:5,
                 from compass.cc:1:
fakequeue.h:7: syntax error before `:'
In file included from compass.h:9,
                 from compass.cc:1:
../low/angle.h:83: warning: ANSI C++ forbids declaration `ostream' with no type
../low/angle.h:83: `ostream' is neither function nor method; cannot be declared friend
../low/angle.h:83: `ostream' declared as an `inline' field
../low/angle.h:83: parse error before `&'
../low/angle.h:88: syntax error before `('
../low/angle.h: In function `void correct()':
../low/angle.h:99: `value' undeclared (first use this function)
../low/angle.h:99: (Each undeclared identifier is reported only once
../low/angle.h:99: for each function it appears in.)
../low/angle.h:99: confused by earlier errors, bailing out
make[2]: *** [compass.o] Error 1
Cosa vuol dire? Le righe incriminate sono le seguenti:
       friend inline ostream & operator << (ostream &o, Degree d) {
                o << double(d);
                return o;
        }
        inline Degree abs();
protected:
        float value;
        inline double correct(double val) {             // corregge nei giusti l
imiti
                val = fmod(val, VALUEEXT);
                while (val < MINVALUE) val += 360;
                while (val >= MAXVALUE) val -= 360;
                return val;
        }
        inline void correct() {
                value = correct(value);
        }
};
Siccome questa porzione di codice non e' mia ma di un precedente
programma universitario mi potete spiegare per piacere il significato
di "friend inline ostream & operator"? Io purtroppo sono piu' esperto
di C che di C++...
Grazie
PS: magari interessa:
bott@nadia:/tmp/nanuccoli-0.6$uname -a
SunOS nadia 5.8 Generic_108528-15 sun4u sparc SUNW,Ultra-5_10
bott@nadia:/tmp/nanuccoli-0.6$c++ -v
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.91.66/specs
gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release)
bott@nadia:/tmp/nanuccoli-0.6$

Dal momento che presumibilmente usi g++ sia su Solaris che su Linux, non
ti conviene procurarti *esattamente* la stessa release del compilatore
su tutti e due? E gia' che ci sei una versione recente, tipo la 3.2 o la
3.1.1?
Secondo me con un po' di download e al massimo mezza giornata a
configurare i due ambienti elimini alla sorgente tante possibili fonti
di problemi.
Ciao,
Nicola
P.S. usi #include <iostream> o #include <iostream.h>? Gestisci
correttamente il namespace std?

 correttamente il namespace std?
Probabilmente la ragione dell'errore e' una di queste due, o entrambe.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy          loreti at pd dot infn dot it

 Probabilmente su Solaris usa Workshop;
In realta', se guardi i messaggi in fondo al post, utilizza un
antidiluviano egcs-2.91.66. Penso che anche un passaggio alla versione
che usa su linux (che sia una 2.95.x o, ugh, 2.96?) sarebbe un ottimo
inizio.
Ciao,
Nicola

 tipo la 3.2 o la 3.1.1?
Leggere questo mi fa venire in mente una domanda:
qualcuno sta facendo il porting del GCC 3.x su Windows
o è tutto fermo alla versione 2.95 ?
--
Gerolamo

 o è tutto fermo alla versione 2.95 ?
	E' uscito il mingw32 col gcc 3.2.
_dave_

 inizio.
sotto linux uso il  2.95, in attesa del suggeritomi 3.2  che per ora per
la mia distribuzione (debian) non è ancora sufficientemente stabile.
-- 
Quando fu chiaro  che l'OS/2 non avrebbe avuto un  seguito, la Microsoft
fece una  scelta diversa,  sviluppando Windows come  interfaccia grafica
orientata al  mouse con MS-DOS. L'idea  fu la seguente: se  non possiamo
sbarazzarci di MS-DOS almeno cerchiamo di camuffarlo.
                          [A. S. Tanenbaum, I moderni sistemi operativi]


E' vero! Adesso me lo scarico :-))
Ma è anche vero che sulla loro home page fino all'altro ieri
c'era scritto ver.2.95!
Che tempismo :-))
--
Gerolamo