Bonjour,
voici mon problème (extrait d'un exam) (utilisant de l'héritage multiple)
J'ai une classe de Base, et deux classes Deriv1 et Deriv2 qui en dérivent.
Ces deux classes Deriv1 et Deriv2 ont des propriétés distinctes, modélisées
ici juste par un attribut _prop (string) de la classe Base, et les méthodes
getProp() des deux classes (qui affichent de quelle classe Deriv1 ou Deriv2
elles sont appelées, et affichent ensuite prop).
J'ai une classe Deriv1Et2 qui dérive de Deriv1 et Deriv2. Je veux que cette
classe ait tantot les propriétés de Deriv1, tantot les propriétés de
Deriv2. On utilise pour cela un type enuméré MODE, et la méthode mutation()
qui va changer de mode. Ensuite, dans la méthode getProp de Deriv1Et2,
suivant le mode, j'appelle Deriv1::getProp() et Deriv2::getProp().
Ceci pour modéliser la mutation d'instance : si Deriv1Et2 a les propriétés
de Deriv1, j'appelle mutation(), elle a les propriétés de Deriv2.
(j'espère etre assez clair, mais le pb est assez compliqué a saisir)
Voici le code, qui compile sans erreurs :
/******** testVirtual.cpp
#include <iostream>
#include <string>
using namespace std;
class Base {
protected:
string _prop;
public:
Base() : _prop("") {}
Base(string p) : _prop(p) {}
};
class Deriv1 : virtual public Base {
public:
Deriv1() { _prop = ""; }
Deriv1(string p) : Base(p) {}
Et voici le résultat que j'obtiens :
*** glibc detected *** free(): invalid pointer: 0xb7e7afe8 ***
props de Deriv1 : Abandon
En changeant l'héritage virtuel des classes Deriv1 et Deriv2 et héritage
normal, j'obtiens :
*** glibc detected *** free(): invalid pointer: 0xb7dfefe8 ***
props de Deriv1 : Mes propsAbandon
Ici l'affiche de _prop se passe bien (mais ça ne marche toujours pas).
Quelqu'un aurait une piste, une idée ?
| On Tue, 24 Jan 2006 08:12:58 +0000 (UTC), Marc Boyer | : | | > -Wall ce n'est pas *tous les warnings* mais *beaucoup de warning*. | | Bvarf. Si je comprends bien, "all" veut autant dire dire "tous" que | (std::)"remove" veut dire "enlever"...
Je crois qu'il est établi qu'en matière de logiciel, il vaut mieux lire la doc que de deviner les fonctions à partir de découpage et regroupement presqu'àléatoire des noms :-)
-f = -ma
-- Gaby
Fabien LE LEZ <gramster@gramster.com> writes:
| On Tue, 24 Jan 2006 08:12:58 +0000 (UTC), Marc Boyer
| <Marc.Boyer@enseeiht.yahoo.fr.invalid>:
|
| > -Wall ce n'est pas *tous les warnings* mais *beaucoup de warning*.
|
| Bvarf. Si je comprends bien, "all" veut autant dire dire "tous" que
| (std::)"remove" veut dire "enlever"...
Je crois qu'il est établi qu'en matière de logiciel, il vaut mieux
lire la doc que de deviner les fonctions à partir de découpage et
regroupement presqu'àléatoire des noms :-)
| On Tue, 24 Jan 2006 08:12:58 +0000 (UTC), Marc Boyer | : | | > -Wall ce n'est pas *tous les warnings* mais *beaucoup de warning*. | | Bvarf. Si je comprends bien, "all" veut autant dire dire "tous" que | (std::)"remove" veut dire "enlever"...
Je crois qu'il est établi qu'en matière de logiciel, il vaut mieux lire la doc que de deviner les fonctions à partir de découpage et regroupement presqu'àléatoire des noms :-)
-f = -ma
-- Gaby
kanze
Gabriel Dos Reis wrote:
Fabien LE LEZ writes:
On Tue, 24 Jan 2006 08:12:58 +0000 (UTC), Marc Boyer :
-Wall ce n'est pas *tous les warnings* mais *beaucoup de warning*.
Bvarf. Si je comprends bien, "all" veut autant dire dire "tous" que (std::)"remove" veut dire "enlever"...
Et « Wall » signifie « mur »:-). (Et fait, je n'ai jamais rencontré un compilateur où on veut tous les avertissements. Pour je ne sais pas quelle raison, il y en a toujours un ou deux qui sont franchement ridicule.)
Je crois qu'il est établi qu'en matière de logiciel, il vaut mieux lire la doc que de deviner les fonctions à partir de découpage et regroupement presqu'àléatoire des noms :-)
Je crois que ça dépend du contexte. Quand tu écris du code, il faut bien lire le doc, soigneusement, pour être sûr de respecter des préconditions, etc. Quand tu le lis, rapidement, il faut pouvoir se fier aux noms des fonctions pour avoir une idée de ce qu'elles font -- le but n'est pas toujours de comprendre tout en détail, mais de comprendre assez pour savoir quelle partie il faut étudier en détail.
Dans le cas de -Wall, on pourrait arguer que vue que c'est dans une ligne de commande, c'est conçu pour être écrit plus que pour être lu. Avoir à taper --activate-warnings-which-the-compiler-author-thinks-are-important chaque fois que tu invoques le compilateur n'est peut-être pas au goût de tout le monde.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Gabriel Dos Reis wrote:
Fabien LE LEZ <gramster@gramster.com> writes:
On Tue, 24 Jan 2006 08:12:58 +0000 (UTC), Marc Boyer
<Marc.Boyer@enseeiht.yahoo.fr.invalid>:
-Wall ce n'est pas *tous les warnings* mais *beaucoup de warning*.
Bvarf. Si je comprends bien, "all" veut autant dire dire
"tous" que (std::)"remove" veut dire "enlever"...
Et « Wall » signifie « mur »:-). (Et fait, je n'ai jamais
rencontré un compilateur où on veut tous les avertissements.
Pour je ne sais pas quelle raison, il y en a toujours un ou deux
qui sont franchement ridicule.)
Je crois qu'il est établi qu'en matière de logiciel, il vaut
mieux lire la doc que de deviner les fonctions à partir de
découpage et regroupement presqu'àléatoire des noms :-)
Je crois que ça dépend du contexte. Quand tu écris du code, il
faut bien lire le doc, soigneusement, pour être sûr de respecter
des préconditions, etc. Quand tu le lis, rapidement, il faut
pouvoir se fier aux noms des fonctions pour avoir une idée de ce
qu'elles font -- le but n'est pas toujours de comprendre tout en
détail, mais de comprendre assez pour savoir quelle partie il
faut étudier en détail.
Dans le cas de -Wall, on pourrait arguer que vue que c'est dans
une ligne de commande, c'est conçu pour être écrit plus que pour
être lu. Avoir à taper
--activate-warnings-which-the-compiler-author-thinks-are-important
chaque fois que tu invoques le compilateur n'est peut-être pas
au goût de tout le monde.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Tue, 24 Jan 2006 08:12:58 +0000 (UTC), Marc Boyer :
-Wall ce n'est pas *tous les warnings* mais *beaucoup de warning*.
Bvarf. Si je comprends bien, "all" veut autant dire dire "tous" que (std::)"remove" veut dire "enlever"...
Et « Wall » signifie « mur »:-). (Et fait, je n'ai jamais rencontré un compilateur où on veut tous les avertissements. Pour je ne sais pas quelle raison, il y en a toujours un ou deux qui sont franchement ridicule.)
Je crois qu'il est établi qu'en matière de logiciel, il vaut mieux lire la doc que de deviner les fonctions à partir de découpage et regroupement presqu'àléatoire des noms :-)
Je crois que ça dépend du contexte. Quand tu écris du code, il faut bien lire le doc, soigneusement, pour être sûr de respecter des préconditions, etc. Quand tu le lis, rapidement, il faut pouvoir se fier aux noms des fonctions pour avoir une idée de ce qu'elles font -- le but n'est pas toujours de comprendre tout en détail, mais de comprendre assez pour savoir quelle partie il faut étudier en détail.
Dans le cas de -Wall, on pourrait arguer que vue que c'est dans une ligne de commande, c'est conçu pour être écrit plus que pour être lu. Avoir à taper --activate-warnings-which-the-compiler-author-thinks-are-important chaque fois que tu invoques le compilateur n'est peut-être pas au goût de tout le monde.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Bruno Jouhier
Et « Wall » signifie « mur »:-). (Et fait, je n'ai jamais rencontré un compilateur où on veut tous les avertissements. Pour je ne sais pas quelle raison, il y en a toujours un ou deux qui sont franchement ridicule.)
Ca fait longtemps que je n'ai pas utilisé gcc sérieusement mais à l'époque ou je faisait du C et du C++ (il y a un peu plus de 10 ans), Richard Stallman avait encore le contrôle et les warnings -Wall étaient intelligents, bien formulés, etc. Rien de ridicule là-dedans. Pour avoir du ridicule il fallait activer -pedantic. RMS avait fait le tri.
Bruno.
Et « Wall » signifie « mur »:-). (Et fait, je n'ai jamais
rencontré un compilateur où on veut tous les avertissements.
Pour je ne sais pas quelle raison, il y en a toujours un ou deux
qui sont franchement ridicule.)
Ca fait longtemps que je n'ai pas utilisé gcc sérieusement mais à l'époque
ou je faisait du C et du C++ (il y a un peu plus de 10 ans), Richard
Stallman avait encore le contrôle et les warnings -Wall étaient
intelligents, bien formulés, etc. Rien de ridicule là-dedans. Pour avoir du
ridicule il fallait activer -pedantic. RMS avait fait le tri.
Et « Wall » signifie « mur »:-). (Et fait, je n'ai jamais rencontré un compilateur où on veut tous les avertissements. Pour je ne sais pas quelle raison, il y en a toujours un ou deux qui sont franchement ridicule.)
Ca fait longtemps que je n'ai pas utilisé gcc sérieusement mais à l'époque ou je faisait du C et du C++ (il y a un peu plus de 10 ans), Richard Stallman avait encore le contrôle et les warnings -Wall étaient intelligents, bien formulés, etc. Rien de ridicule là-dedans. Pour avoir du ridicule il fallait activer -pedantic. RMS avait fait le tri.
Bruno.
Fabien LE LEZ
On 24 Jan 2006 23:53:38 -0800, "kanze" :
Avoir à taper --activate-warnings-which-the-compiler-author-thinks-are-important chaque fois que tu invoques le compilateur n'est peut-être pas au goût de tout le monde.
AMHA on ne devrait pas avoir à le taper : ça devrait être l'option par défaut.
On 24 Jan 2006 23:53:38 -0800, "kanze" <kanze@gabi-soft.fr>:
Avoir à taper
--activate-warnings-which-the-compiler-author-thinks-are-important
chaque fois que tu invoques le compilateur n'est peut-être pas
au goût de tout le monde.
AMHA on ne devrait pas avoir à le taper : ça devrait être l'option par
défaut.
Avoir à taper --activate-warnings-which-the-compiler-author-thinks-are-important chaque fois que tu invoques le compilateur n'est peut-être pas au goût de tout le monde.
AMHA on ne devrait pas avoir à le taper : ça devrait être l'option par défaut.
Gabriel Dos Reis
Fabien LE LEZ writes:
| On 24 Jan 2006 23:53:38 -0800, "kanze" : | | >Avoir à taper | >--activate-warnings-which-the-compiler-author-thinks-are-important | >chaque fois que tu invoques le compilateur n'est peut-être pas | >au goût de tout le monde. | | AMHA on ne devrait pas avoir à le taper : ça devrait être l'option par | défaut.
Well, des gens raisonnables ont différents avis raisonnables sur la question. J'ai perdu cette bataille depuis.
Et de plus, franchement, il y a des warninigs dans -Wall que je n'ai pas envie d'avoir dans du code très raisonnable. Je viens d'en virer un pas plus tard qu'avant-hier -- mais cela prend du temps.
-- Gaby
Fabien LE LEZ <gramster@gramster.com> writes:
| On 24 Jan 2006 23:53:38 -0800, "kanze" <kanze@gabi-soft.fr>:
|
| >Avoir à taper
| >--activate-warnings-which-the-compiler-author-thinks-are-important
| >chaque fois que tu invoques le compilateur n'est peut-être pas
| >au goût de tout le monde.
|
| AMHA on ne devrait pas avoir à le taper : ça devrait être l'option par
| défaut.
Well, des gens raisonnables ont différents avis raisonnables sur la
question. J'ai perdu cette bataille depuis.
Et de plus, franchement, il y a des warninigs dans -Wall que je n'ai
pas envie d'avoir dans du code très raisonnable. Je viens d'en virer
un pas plus tard qu'avant-hier -- mais cela prend du temps.
| On 24 Jan 2006 23:53:38 -0800, "kanze" : | | >Avoir à taper | >--activate-warnings-which-the-compiler-author-thinks-are-important | >chaque fois que tu invoques le compilateur n'est peut-être pas | >au goût de tout le monde. | | AMHA on ne devrait pas avoir à le taper : ça devrait être l'option par | défaut.
Well, des gens raisonnables ont différents avis raisonnables sur la question. J'ai perdu cette bataille depuis.
Et de plus, franchement, il y a des warninigs dans -Wall que je n'ai pas envie d'avoir dans du code très raisonnable. Je viens d'en virer un pas plus tard qu'avant-hier -- mais cela prend du temps.
-- Gaby
Fabien LE LEZ
On 24 Jan 2006 23:53:38 -0800, "kanze" :
Et « Wall » signifie « mur »:-)
J'ai effectivement mis un certain temps à comprendre pourquoi les intervenants de fclc++ parlaient de mur à tout bout de champ ~_~
On 24 Jan 2006 23:53:38 -0800, "kanze" <kanze@gabi-soft.fr>:
Et « Wall » signifie « mur »:-)
J'ai effectivement mis un certain temps à comprendre pourquoi les
intervenants de fclc++ parlaient de mur à tout bout de champ ~_~
J'ai effectivement mis un certain temps à comprendre pourquoi les intervenants de fclc++ parlaient de mur à tout bout de champ ~_~
kanze
Bruno Jouhier wrote:
Et « Wall » signifie « mur »:-). (Et fait, je n'ai jamais rencontré un compilateur où on veut tous les avertissements. Pour je ne sais pas quelle raison, il y en a toujours un ou deux qui sont franchement ridicule.)
Ca fait longtemps que je n'ai pas utilisé gcc sérieusement mais à l'époque ou je faisait du C et du C++ (il y a un peu plus de 10 ans), Richard Stallman avait encore le contrôle et les warnings -Wall étaient intelligents, bien formulés, etc. Rien de ridicule là-dedans. Pour avoir du ridicule il fallait activer -pedantic. RMS avait fait le tri.
Depuis tout le temps (ou au moins depuis quinze ans), -Wall n'avait pas activé assez d'avertissements ; il a toujours fallu activer aussi -pedantic. Ça date, et je ne me rappelle plus des avertissements idiots à l'époque, mais il y en a bien aujourd'hui. Y compris certains que je ne sais pas supprimer, genre « vous vous êtes servi de tmpnam, ce n'est pas bien » (or que c'est bien LA fonction qu'il faut, dans le contexte où je l'utilise).
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Bruno Jouhier wrote:
Et « Wall » signifie « mur »:-). (Et fait, je n'ai jamais
rencontré un compilateur où on veut tous les avertissements.
Pour je ne sais pas quelle raison, il y en a toujours un ou
deux qui sont franchement ridicule.)
Ca fait longtemps que je n'ai pas utilisé gcc sérieusement
mais à l'époque ou je faisait du C et du C++ (il y a un peu
plus de 10 ans), Richard Stallman avait encore le contrôle et
les warnings -Wall étaient intelligents, bien formulés, etc.
Rien de ridicule là-dedans. Pour avoir du ridicule il fallait
activer -pedantic. RMS avait fait le tri.
Depuis tout le temps (ou au moins depuis quinze ans), -Wall
n'avait pas activé assez d'avertissements ; il a toujours fallu
activer aussi -pedantic. Ça date, et je ne me rappelle plus des
avertissements idiots à l'époque, mais il y en a bien
aujourd'hui. Y compris certains que je ne sais pas supprimer,
genre « vous vous êtes servi de tmpnam, ce n'est pas bien » (or
que c'est bien LA fonction qu'il faut, dans le contexte où je
l'utilise).
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Et « Wall » signifie « mur »:-). (Et fait, je n'ai jamais rencontré un compilateur où on veut tous les avertissements. Pour je ne sais pas quelle raison, il y en a toujours un ou deux qui sont franchement ridicule.)
Ca fait longtemps que je n'ai pas utilisé gcc sérieusement mais à l'époque ou je faisait du C et du C++ (il y a un peu plus de 10 ans), Richard Stallman avait encore le contrôle et les warnings -Wall étaient intelligents, bien formulés, etc. Rien de ridicule là-dedans. Pour avoir du ridicule il fallait activer -pedantic. RMS avait fait le tri.
Depuis tout le temps (ou au moins depuis quinze ans), -Wall n'avait pas activé assez d'avertissements ; il a toujours fallu activer aussi -pedantic. Ça date, et je ne me rappelle plus des avertissements idiots à l'époque, mais il y en a bien aujourd'hui. Y compris certains que je ne sais pas supprimer, genre « vous vous êtes servi de tmpnam, ce n'est pas bien » (or que c'est bien LA fonction qu'il faut, dans le contexte où je l'utilise).
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
kanze
Fabien LE LEZ wrote:
On 24 Jan 2006 23:53:38 -0800, "kanze" :
Avoir à taper --activate-warnings-which-the-compiler-author-thinks-are-important chaque fois que tu invoques le compilateur n'est peut-être pas au goût de tout le monde.
AMHA on ne devrait pas avoir à le taper : ça devrait être l'option par défaut.
Je serais d'accord s'il n'y avait que des avertissements intéressants là-dedans, et qu'il y avait tous les avertissements intéressants. Ce n'est malheureusement jamais le cas.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Fabien LE LEZ wrote:
On 24 Jan 2006 23:53:38 -0800, "kanze" <kanze@gabi-soft.fr>:
Avoir à taper
--activate-warnings-which-the-compiler-author-thinks-are-important
chaque fois que tu invoques le compilateur n'est peut-être pas
au goût de tout le monde.
AMHA on ne devrait pas avoir à le taper : ça devrait être
l'option par défaut.
Je serais d'accord s'il n'y avait que des avertissements
intéressants là-dedans, et qu'il y avait tous les avertissements
intéressants. Ce n'est malheureusement jamais le cas.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Avoir à taper --activate-warnings-which-the-compiler-author-thinks-are-important chaque fois que tu invoques le compilateur n'est peut-être pas au goût de tout le monde.
AMHA on ne devrait pas avoir à le taper : ça devrait être l'option par défaut.
Je serais d'accord s'il n'y avait que des avertissements intéressants là-dedans, et qu'il y avait tous les avertissements intéressants. Ce n'est malheureusement jamais le cas.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Gabriel Dos Reis
"kanze" writes:
| Bruno Jouhier wrote: | > > Et « Wall » signifie « mur »:-). (Et fait, je n'ai jamais | > > rencontré un compilateur où on veut tous les avertissements. | > > Pour je ne sais pas quelle raison, il y en a toujours un ou | > > deux qui sont franchement ridicule.) | | > Ca fait longtemps que je n'ai pas utilisé gcc sérieusement | > mais à l'époque ou je faisait du C et du C++ (il y a un peu | > plus de 10 ans), Richard Stallman avait encore le contrôle et | > les warnings -Wall étaient intelligents, bien formulés, etc. | > Rien de ridicule là-dedans. Pour avoir du ridicule il fallait | > activer -pedantic. RMS avait fait le tri. | | Depuis tout le temps (ou au moins depuis quinze ans), -Wall | n'avait pas activé assez d'avertissements ; il a toujours fallu | activer aussi -pedantic.
C'est toujours le cas. Et aujouter -ansi ou -std=c++98.
| Ça date, et je ne me rappelle plus des | avertissements idiots à l'époque, mais il y en a bien | aujourd'hui. Y compris certains que je ne sais pas supprimer, | genre « vous vous êtes servi de tmpnam, ce n'est pas bien » (or | que c'est bien LA fonction qu'il faut, dans le contexte où je | l'utilise).
Ça c'est le linker, pas GCC.
-- Gaby
"kanze" <kanze@gabi-soft.fr> writes:
| Bruno Jouhier wrote:
| > > Et « Wall » signifie « mur »:-). (Et fait, je n'ai jamais
| > > rencontré un compilateur où on veut tous les avertissements.
| > > Pour je ne sais pas quelle raison, il y en a toujours un ou
| > > deux qui sont franchement ridicule.)
|
| > Ca fait longtemps que je n'ai pas utilisé gcc sérieusement
| > mais à l'époque ou je faisait du C et du C++ (il y a un peu
| > plus de 10 ans), Richard Stallman avait encore le contrôle et
| > les warnings -Wall étaient intelligents, bien formulés, etc.
| > Rien de ridicule là-dedans. Pour avoir du ridicule il fallait
| > activer -pedantic. RMS avait fait le tri.
|
| Depuis tout le temps (ou au moins depuis quinze ans), -Wall
| n'avait pas activé assez d'avertissements ; il a toujours fallu
| activer aussi -pedantic.
C'est toujours le cas. Et aujouter -ansi ou -std=c++98.
| Ça date, et je ne me rappelle plus des
| avertissements idiots à l'époque, mais il y en a bien
| aujourd'hui. Y compris certains que je ne sais pas supprimer,
| genre « vous vous êtes servi de tmpnam, ce n'est pas bien » (or
| que c'est bien LA fonction qu'il faut, dans le contexte où je
| l'utilise).
| Bruno Jouhier wrote: | > > Et « Wall » signifie « mur »:-). (Et fait, je n'ai jamais | > > rencontré un compilateur où on veut tous les avertissements. | > > Pour je ne sais pas quelle raison, il y en a toujours un ou | > > deux qui sont franchement ridicule.) | | > Ca fait longtemps que je n'ai pas utilisé gcc sérieusement | > mais à l'époque ou je faisait du C et du C++ (il y a un peu | > plus de 10 ans), Richard Stallman avait encore le contrôle et | > les warnings -Wall étaient intelligents, bien formulés, etc. | > Rien de ridicule là-dedans. Pour avoir du ridicule il fallait | > activer -pedantic. RMS avait fait le tri. | | Depuis tout le temps (ou au moins depuis quinze ans), -Wall | n'avait pas activé assez d'avertissements ; il a toujours fallu | activer aussi -pedantic.
C'est toujours le cas. Et aujouter -ansi ou -std=c++98.
| Ça date, et je ne me rappelle plus des | avertissements idiots à l'époque, mais il y en a bien | aujourd'hui. Y compris certains que je ne sais pas supprimer, | genre « vous vous êtes servi de tmpnam, ce n'est pas bien » (or | que c'est bien LA fonction qu'il faut, dans le contexte où je | l'utilise).
Ça c'est le linker, pas GCC.
-- Gaby
kanze
Gabriel Dos Reis wrote:
"kanze" writes:
Bruno Jouhier wrote:
Et « Wall » signifie « mur »:-). (Et fait, je n'ai jamais rencontré un compilateur où on veut tous les avertissements. Pour je ne sais pas quelle raison, il y en a toujours un ou deux qui sont franchement ridicule.)
Ca fait longtemps que je n'ai pas utilisé gcc sérieusement mais à l'époque ou je faisait du C et du C++ (il y a un peu plus de 10 ans), Richard Stallman avait encore le contrôle et les warnings -Wall étaient intelligents, bien formulés, etc. Rien de ridicule là-dedans. Pour avoir du ridicule il fallait activer -pedantic. RMS avait fait le tri.
Depuis tout le temps (ou au moins depuis quinze ans), -Wall n'avait pas activé assez d'avertissements ; il a toujours fallu activer aussi -pedantic.
C'est toujours le cas. Et aujouter -ansi ou -std=c++98.
Tout à fait.
En passant, je trouve la forme -std=c++98 particulièrement bien conçue. Après tout, comme j'ai lu dans un .sig quelque part, «@The nice thing about standards is that there are so many to chose from. » Alors, on précise le parfum du jour. Ça deviendra particulièrement interessant quand il y aura une nouvelle version de C++, avec peut-être quelques petites incompatibilités avec l'ancienne. Alors, -std=c++98 pour l'ancien code, -std=c++0x pour le nouveau.
En ce qui me concerne, je serais pour exiger un -std=x en option, toujours, pour chaque langage qu'on compile. Avec aussi éventuellement un -std=posix-x.y, si on y arrive. J'aime bien l'idée de spécifier exactement quelles normes m'ont servies. Mais j'imagine qu'il y a beaucoup d'autres utilisateurs qui ne seraient pas d'accord.
Ça date, et je ne me rappelle plus des avertissements idiots à l'époque, mais il y en a bien aujourd'hui. Y compris certains que je ne sais pas supprimer, genre « vous vous êtes servi de tmpnam, ce n'est pas bien » (or que c'est bien LA fonction qu'il faut, dans le contexte où je l'utilise).
Ça c'est le linker, pas GCC.
Il sort lors de la compilation, si je me souviens correctement.
En revanche, il ne sort que sous Linux ; le même code exactement se compile sous Solaris sans avertissement.
Enfin, je crois. L'internet ne marche plus chez moi ; Free a annoncé qu'il leur faudrait plus d'un mois avant qu'ils ne régardent le problème, et je suis en train de changer de fournisseurs. Du coup, j'ai profité du temps mort pour réinstaller la dernière version de Linux (Mandriva 2005), et il n'y a donc plus rien qui ne marche. (Il paraît que je ne suis pas le seul à avoir eu de tels problèmes avec Free.)
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Gabriel Dos Reis wrote:
"kanze" <kanze@gabi-soft.fr> writes:
Bruno Jouhier wrote:
Et « Wall » signifie « mur »:-). (Et fait, je n'ai
jamais rencontré un compilateur où on veut tous les
avertissements. Pour je ne sais pas quelle raison, il y
en a toujours un ou deux qui sont franchement ridicule.)
Ca fait longtemps que je n'ai pas utilisé gcc sérieusement
mais à l'époque ou je faisait du C et du C++ (il y a un
peu plus de 10 ans), Richard Stallman avait encore le
contrôle et les warnings -Wall étaient intelligents, bien
formulés, etc. Rien de ridicule là-dedans. Pour avoir du
ridicule il fallait activer -pedantic. RMS avait fait le
tri.
Depuis tout le temps (ou au moins depuis quinze ans), -Wall
n'avait pas activé assez d'avertissements ; il a toujours
fallu activer aussi -pedantic.
C'est toujours le cas. Et aujouter -ansi ou -std=c++98.
Tout à fait.
En passant, je trouve la forme -std=c++98 particulièrement bien
conçue. Après tout, comme j'ai lu dans un .sig quelque part,
«@The nice thing about standards is that there are so many to
chose from. » Alors, on précise le parfum du jour. Ça deviendra
particulièrement interessant quand il y aura une nouvelle
version de C++, avec peut-être quelques petites incompatibilités
avec l'ancienne. Alors, -std=c++98 pour l'ancien code,
-std=c++0x pour le nouveau.
En ce qui me concerne, je serais pour exiger un -std=x en
option, toujours, pour chaque langage qu'on compile. Avec aussi
éventuellement un -std=posix-x.y, si on y arrive. J'aime bien
l'idée de spécifier exactement quelles normes m'ont servies.
Mais j'imagine qu'il y a beaucoup d'autres utilisateurs qui ne
seraient pas d'accord.
Ça date, et je ne me rappelle plus des avertissements idiots
à l'époque, mais il y en a bien aujourd'hui. Y compris
certains que je ne sais pas supprimer, genre « vous vous
êtes servi de tmpnam, ce n'est pas bien » (or que c'est bien
LA fonction qu'il faut, dans le contexte où je l'utilise).
Ça c'est le linker, pas GCC.
Il sort lors de la compilation, si je me souviens correctement.
En revanche, il ne sort que sous Linux ; le même code exactement
se compile sous Solaris sans avertissement.
Enfin, je crois. L'internet ne marche plus chez moi ; Free a
annoncé qu'il leur faudrait plus d'un mois avant qu'ils ne
régardent le problème, et je suis en train de changer de
fournisseurs. Du coup, j'ai profité du temps mort pour
réinstaller la dernière version de Linux (Mandriva 2005), et il
n'y a donc plus rien qui ne marche. (Il paraît que je ne suis
pas le seul à avoir eu de tels problèmes avec Free.)
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Et « Wall » signifie « mur »:-). (Et fait, je n'ai jamais rencontré un compilateur où on veut tous les avertissements. Pour je ne sais pas quelle raison, il y en a toujours un ou deux qui sont franchement ridicule.)
Ca fait longtemps que je n'ai pas utilisé gcc sérieusement mais à l'époque ou je faisait du C et du C++ (il y a un peu plus de 10 ans), Richard Stallman avait encore le contrôle et les warnings -Wall étaient intelligents, bien formulés, etc. Rien de ridicule là-dedans. Pour avoir du ridicule il fallait activer -pedantic. RMS avait fait le tri.
Depuis tout le temps (ou au moins depuis quinze ans), -Wall n'avait pas activé assez d'avertissements ; il a toujours fallu activer aussi -pedantic.
C'est toujours le cas. Et aujouter -ansi ou -std=c++98.
Tout à fait.
En passant, je trouve la forme -std=c++98 particulièrement bien conçue. Après tout, comme j'ai lu dans un .sig quelque part, «@The nice thing about standards is that there are so many to chose from. » Alors, on précise le parfum du jour. Ça deviendra particulièrement interessant quand il y aura une nouvelle version de C++, avec peut-être quelques petites incompatibilités avec l'ancienne. Alors, -std=c++98 pour l'ancien code, -std=c++0x pour le nouveau.
En ce qui me concerne, je serais pour exiger un -std=x en option, toujours, pour chaque langage qu'on compile. Avec aussi éventuellement un -std=posix-x.y, si on y arrive. J'aime bien l'idée de spécifier exactement quelles normes m'ont servies. Mais j'imagine qu'il y a beaucoup d'autres utilisateurs qui ne seraient pas d'accord.
Ça date, et je ne me rappelle plus des avertissements idiots à l'époque, mais il y en a bien aujourd'hui. Y compris certains que je ne sais pas supprimer, genre « vous vous êtes servi de tmpnam, ce n'est pas bien » (or que c'est bien LA fonction qu'il faut, dans le contexte où je l'utilise).
Ça c'est le linker, pas GCC.
Il sort lors de la compilation, si je me souviens correctement.
En revanche, il ne sort que sous Linux ; le même code exactement se compile sous Solaris sans avertissement.
Enfin, je crois. L'internet ne marche plus chez moi ; Free a annoncé qu'il leur faudrait plus d'un mois avant qu'ils ne régardent le problème, et je suis en train de changer de fournisseurs. Du coup, j'ai profité du temps mort pour réinstaller la dernière version de Linux (Mandriva 2005), et il n'y a donc plus rien qui ne marche. (Il paraît que je ne suis pas le seul à avoir eu de tels problèmes avec Free.)
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34