Re: G++ 3.2

Startseite

Nachricht beantworten
Autor: Pierre Pronchery
Datum:  
To: guilde
Betreff: Re: G++ 3.2
Je suis pas expert, alors je poste ici pour commentaires (no offense
JM).

On Mon, 2003-01-27 at 06:25, Jean-Michel.Bencetti wrote:
> C'est une appli que je suis sensé devoir maintenir. Elle fait quelque
> millier de lignes, et intégre une palanquée de bibliothèques.
>
> J'ai du mal à panser que g++ 3.2 ne puisse pas être compatible avec g++
> 2.96. Les spécifications du c++ auraient-elles évolué sans que je soit
> prévénu ?

oui a ce qu'on m'a dit (ou bien alors le comportement par defaut de
g++?).
>
> Voici une illustration du phénomène :
>
> cat hello.cpp
> #include <iostream>
> int main()
> {
>         cout << "Hello\n";
> }

>
>
> $ g++ hello.cpp
> hello.cpp: Dans function « int main() »:
> hello.cpp:4: « cout » non déclaré (première utilisation dans cette
>    fonction)
> hello.cpp:4: (Chaque identificateur non déclaré est rapporté seulement une
>    seule fois pour la fonction dans laquelle il apparaît.)

>
> Si je change <iostream> par <iostream.h>, voici le résultat :
> $ g++ hello.cpp
> Dans le fichier inclus à partir de 
> /usr/include/c++/3.2/backward/iostream.h:31,
>           à partir de hello.cpp:1:
> /usr/include/c++/3.2/backward/backward_warning.h:32:2: AVERTISSEMENT: 
> #warning This file includes at least one deprecated or antiquated 
> header. Please consider
> using one of the 32 headers found in section 17.4.1.2 of the C++ 
> standard. Examples include substituting the <X> header for the <X.h> 
> header for C++ includes, or <sstream> instead of the deprecated header 
> <strstream.h>. To disable this warning use -Wno-deprecated.

>
> Ce n'est qu'un avertissement, mais ça me donne un a.out qui fonctionne.

c'est deja ca. ca evitera de tout relire.
>
> Comment est-ce possible qu'un exemple aussi éculé puisse donner de si
> étranges résultats ?

ben... perso j'ai du changer qquns de mes softs pour qu'ils compilent,
oui... j'etais surpris...
>
> Et avec du code un peu plus "objet", ça échoue lamentablement avec des
> messages du genre :
>
> /usr/lib/gcc-lib/i386-redhat-linux/3.2/../../../crt1.o: In function
> `_start':
> /usr/lib/gcc-lib/i386-redhat-linux/3.2/../../../crt1.o(.text+0x18):
> undefined reference to `main'

heu y a pas de main() dans ton fichier. si c'est juste un fichier objet,
compile le avec -c et sans -o.

--
Pierre