Nous sommes actuellement le 01 Juil 2026, 13:17

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 17 message(s) ]  Aller vers la page 1, 2  Suivant
Auteur Message
 Sujet du message: Probleme G++ 3.2
MessagePublié: 31 Oct 2002, 19:05 
Hors-ligne
Répond à tout!
Répond à tout!

Inscription : 10 Jan 2002, 14:09
Message(s) : 2386
Localisation : Verdun
Bonjour, je sais que c'est de la prog, mais je suis presque convaicu que je vais avoir plus de réponse ici ;-)

J'avais fais quelque p'tit programme l'été passé, faute de temps je ne m'y était pas encore remis. Voila , maintenant je prend les memes programme, mais avec gcc 3.2 au lieu de 2.95 et je recois l'erreur suivante :

Code :
In file included from /usr/include/c++/3.2/backward/iostream.h:31, from sap2nucl.cpp:4: /usr/include/c++/3.2/backward/backward_warning.h:32:2: warning: #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.
sap2nucl.cpp: In function `int main()':


OK, maintenant apres 1:30 de fouille sur internet pour le "section 17.4.1.2 of the C++ standard" j'ai rien trouver a par de dire qu'il devait l'améliorer.

Voici le genre de programe tout a faire ridicule qui ne passe pas a cause de ca :
Code :
#include <iostream.h>

int main(void)
{
   char ch;
         // réimprime a l'écran jusqu'a ce que l'entrée soit au EOF
   while (cin.get(ch)){
      cout << char(ch) << " point virgule" << '\n';
   }
   return 0;
}



voyez, meme avec pas de code comme ca, sa chie ;-(

Quelque pourrait-il me donner un ptit coup de main

ok, si je rajoute le -Wno-deprecated, ca fonctionne avec le
iostream.h

Mais comment je fais pour savoir comment me mettre a jour

car, si j'utilise le iostream (sans le .h de la nouvelle version).

je recois des erreur comme quoi mon "cin" ou "cout". ne sont pas déclarer?!?
C++ devient-il fou?


Merci
SanctuS


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 31 Oct 2002, 19:42 
Hors-ligne
Occasionnel
Occasionnel

Inscription : 08 Jan 2002, 22:43
Message(s) : 140
Localisation : Québec
Ok, assez simple:

#include <iostream.h>

c'est un "vieux" header du C++; qui reste la pour raison de compatibilite.
Toutefois, quand tu utilises

#include <iostream>

ca t'oblige a utiliser les "namespace". soit une sorte de prefixe std:: devant toutes les choses que tu utilise de la librairie standard. La solution la plus simple pour toi est de mettre

using namespace std;

tout de suite apres ton include; ca va regler ton probleme.
Donc, ton programme final est:

Code :
#include <iostream>
using namespace std;

int main(void)
{
   char ch;
         // réimprime a l'écran jusqu'a ce que l'entrée soit au EOF
   while (cin.get(ch)){
      cout << char(ch) << " point virgule" << '\n';
   }
   return 0;
}


Je pourrais divaguer sur l'importance des namespace... mais tout ce qui t'importe ici est que tu as a ajouter "using namespace std" afin que tout fonctionne comme avant (les cout, cin, ...)


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 31 Oct 2002, 22:18 
Hors-ligne
Répond à tout!
Répond à tout!

Inscription : 10 Jan 2002, 14:09
Message(s) : 2386
Localisation : Verdun
ok, merci

c'Est simple, mais je crois que si je veux continuer plus loin, je vais devoir en apprendre un peu plus. Pourriez vous me dire svp ou je pourrais avoir de l'information pertinante sur ces nouvelles(C'était pas dans les livres quand j'ai commencé, et c'était pas trop loin dans le temps non pluss ;-) techniques de programmation en C++


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 31 Oct 2002, 22:28 
Hors-ligne
Occasionnel
Occasionnel

Inscription : 08 Jan 2002, 22:43
Message(s) : 140
Localisation : Québec
Citer:
Pourriez vous me dire svp ou je pourrais avoir de l'information pertinante sur ces nouvelles


Difficile a dire. Je connais les noms de quelques bons livres.

Stroustrup - C++, how to program
Deiteil & Deitel (le nom du livre m'echappe)
C++ Primer (un gros livre de reference un peu avance)

mais tout ca, c'est pour la programmation C++ "pure" (ca ne dira pas comment faire de l'interface graphique ou utiliser telle fonction du systeme)
Peut etre aussi qu'il y a de bons livres gratuits ou des tutoriels sur internet...


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 31 Oct 2002, 22:50 
Hors-ligne
Répond à tout!
Répond à tout!

Inscription : 10 Jan 2002, 14:09
Message(s) : 2386
Localisation : Verdun
j'ai appris(facon de parlé) C++ avec C++ primer plus, mais une plus vieille version, donc il n'A jamais été question de ca. Alors maintenant que j'ai mis a jour mon gcc, l'erreur a aparu.

Merci, je vais faire un comparaison pour voir lequelle m'irai le mieux


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 01 Nov 2002, 15:12 
Hors-ligne
Répond à tout!
Répond à tout!

Inscription : 10 Jan 2002, 14:09
Message(s) : 2386
Localisation : Verdun
Ok, ca me donne un autre probleme étrange.

Ok, imaginons le code ci-dessous :
Code :
//test2.cpp
#include <iostream.h>

//using namespace std;

int main(void)
{
        cout << "Allo" << '\n';
        return 0;
}

compilation
Code :
$ g++ test2.cpp -o test2 -Wno-deprecated
$ test2
Allo
$ echo $?
0


Donc, tout ce fait comme avant (c'est comme avant)

Maintenant avec le nouveau :
Code :
//test.cpp
#include <iostream>

using namespace std;

int main(void)
{
        cout << "Allo" << '\n';
        return 0;
}


Compilation et test :
Code :
$ g++ test.cpp -o test
$ test
$ echo $?
1

Si vous n'etes pas sous unix, echo $? sort le code de retour.
Donc il ne se rend meme pas au cout <<
.
Une idée

Merci


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 01 Nov 2002, 23:13 
Hors-ligne
Occasionnel
Occasionnel

Inscription : 08 Jan 2002, 22:43
Message(s) : 140
Localisation : Québec
> Donc il ne se rend meme pas au cout <<

Il y a un probleme alors avec cette installation de g++ 3.2 . Ca me surprendrait toutefois que ta distribution viennes avec un compilateur si defectueux.

essaie:

std::cout << "Allo" << std::endl;


peut etre que lorsque seul "cout" est utilise, il utilise le "vieux" cout plutot que le nouveau, et ca plante etrangement par conflit de librairie.
Mais sinon... je n'ai vraiment pas d'idee!


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 01 Nov 2002, 23:34 
Hors-ligne
Répond à tout!
Répond à tout!

Inscription : 10 Jan 2002, 14:09
Message(s) : 2386
Localisation : Verdun
ca plante toujours!

J'ai pourtant compilé bcp de programme depuis que j'ai installé mandrake 8.2

Peut-etre il y a reelement un probleme et que tout les autres libraries utilisais le vieux headers.
Mais étrange que avec le nouveau header j'Ai le probleme et que ca compile correctement avec l'ancien.. hummm
je vais dormir la dessus

Merci


Haut
 Profil  
Répondre en citant  
 Sujet du message: dynamic libraries
MessagePublié: 02 Nov 2002, 12:59 
Hors-ligne
Régulier
Régulier

Inscription : 06 Jan 2002, 22:42
Message(s) : 416
Localisation : Québec
Allô !

sanctus a écrit:
Mais étrange que avec le nouveau header j'Ai le probleme et que ca compile correctement avec l'ancien.. hummm je vais dormir la dessus


Habituellement ce que je ferais, ça serait de regarder avec quel librairie dynamique il va faire le link...

Une fois que ton programme est compilé, tu peux certainement faire un ldd question de voir comment il va chercher sa librairie.

Si je me rappel bien, par défaut il fait un link dynamique et non statique...

Une commande pratique c'est ldconfig -p | less qui va te montrer toutes les librairies dynamiques qui sont trouvées et surtout dans quel ordre il va faire sa résolution, car ça se peut que l'ancienne librairie réponde en premier et que tu ais été chanceux de ne pas avoir des coredump ou comportements plus étranges...

Ça pourra faire une place de plus à regarder si jamais tu as encore des problèmes...

Bebye !

_________________
Thunder

The two basic principles of Windows administration:
- For minor problems, reboot
- For major problems, reinstall


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 02 Nov 2002, 17:52 
Hors-ligne
Répond à tout!
Répond à tout!

Inscription : 10 Jan 2002, 14:09
Message(s) : 2386
Localisation : Verdun
comment je fais pour savoir c'est quel lib* qui contient mon iostream.h ou iostream?


Haut
 Profil  
Répondre en citant  
 Sujet du message: ldconfig et ldd
MessagePublié: 02 Nov 2002, 21:53 
Hors-ligne
Régulier
Régulier

Inscription : 06 Jan 2002, 22:42
Message(s) : 416
Localisation : Québec
Allô !

sanctus a écrit:
comment je fais pour savoir c'est quel lib* qui contient mon iostream.h ou iostream?


Ce que ça permet de faire le ldd, c'est de te donner quels sont les librairies dynamiques que ton programme a besoin pour être content...

Ton programme test qui est compilé l'est certainement avec un glibc dynamique... Selon ce que je vois, tu sembles avoir les deux versions de g++ sur ta machine (2.95 et 3.2)... Certainement que les deux applications utilisent des librairies différentes, là encore je peux me tromper...

C'est peut-être pas ça non-plus et je peux être dans les patates. C'est une avenue que je regarde quand je me mets à avoir des comportements étranges. ;)

Aussi, regarde tes fichiers includes, iostream.h et iostream déclare certainement des choses de façon différente... C'est un peu comme le winreg.h. Pas certain, mais je crois que c'était toi qui avait des problèmes avec ça (voir un autre fil de discussion)...

ldconfig est utilisé de pair avec ldd... C'est pour dire quels sont les librairies qui sont utilisées... Par exemple, tu as des problèmes avec une application qui ne démarre pas ou n'a pas le comportement souhaitée, tu peux regarder comment les librairies dynamiques sont recherchées.

Bebye !

_________________
Thunder

The two basic principles of Windows administration:
- For minor problems, reboot
- For major problems, reinstall


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 03 Nov 2002, 00:17 
Hors-ligne
Répond à tout!
Répond à tout!

Inscription : 10 Jan 2002, 14:09
Message(s) : 2386
Localisation : Verdun
avec ldd test (le nom du prog compilé)
j'obtient ceci :
Code :
[sanctus@AthlonXP dev]$ ldd test
        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x4001a000)
        libm.so.6 => /lib/i686/libm.so.6 (0x400de000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x40101000)
        libc.so.6 => /lib/i686/libc.so.6 (0x40109000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)


Je trouve seulement le compilateur 3.2, je ne vois aucune trace du 2.96 que mandrake avait dans la version 8.1


Haut
 Profil  
Répondre en citant  
 Sujet du message: Bon là les gros canons
MessagePublié: 04 Nov 2002, 00:02 
Hors-ligne
Régulier
Régulier

Inscription : 06 Jan 2002, 22:42
Message(s) : 416
Localisation : Québec
Allô !

Vraiment, c'est étrange comme problème...

Je croyais que la version 2.96 et 3.2 étaient ensemble, mais ça ne semble pas être le cas...

Comme nous ne sommes pas capable d'avoir une sortie à l'écran, seulement un errorlevel... (C'est tout de même mieux qu'un coup de pied dans le c++). ;)

Ce que tu peux faire c'est de suivre l'ordre de chargement des librairies... Une façon pour le voir, c'est de prendre la commande ltrace et elle va te dire les différents appels qui sont faits, ça va certainement te donner une idée où ça peut planter...

Mais bon l'étape suivante c'est de le tracer avec gdb... C'est mon côté bas niveau qui ressort dans ce temps là. ;)

Bonne recherche...

Bebye !

_________________
Thunder

The two basic principles of Windows administration:
- For minor problems, reboot
- For major problems, reinstall


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 04 Nov 2002, 08:24 
Hors-ligne
Répond à tout!
Répond à tout!

Inscription : 10 Jan 2002, 14:09
Message(s) : 2386
Localisation : Verdun
ok, merci


Mais j'ai quelque peu trouvé, malgrés que sa semble bizarre, semble-t-il que le compilateur n'aimait tout simplement pas mon fichier, car je l'ai refait dans un autre fichier dans jedit a partir de zéro, et voila ca fonctionne..


Haut
 Profil  
Répondre en citant  
 Sujet du message: P-être...
MessagePublié: 05 Nov 2002, 23:13 
Hors-ligne
Régulier
Régulier

Inscription : 06 Jan 2002, 22:42
Message(s) : 416
Localisation : Québec
Allô !

Est-ce que ça se pourrait que ça soit une histoire de conversion des CR/LF... Ça arrive que Linux est chatouilleux sur ça...

Maintenant je ne prends pas de risques tous les fichiers qui sont pour êtres utilisés dans Linux je les mets en UNIX (0x0A) contrairement à DOS (0x0D0x0A)...

Bebye !

_________________
Thunder

The two basic principles of Windows administration:
- For minor problems, reboot
- For major problems, reinstall


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 17 message(s) ]  Aller vers la page 1, 2  Suivant

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site