OVH Cloud OVH Cloud

warning VC++6.0

26 réponses
Avatar
Etienne Rousee
Bonsoir,

Quelqu'un connait il ce warning:
warning C4541: 'dynamic_cast' used on polymorphic type 'class
ObjetGeometrique' with /GR-; unpredictable behavior may result
Et effectivement ,'dynamic_cast' fait ensuite planter.
Qu'est ce que l'option /GR ?

Pardon pour le HS, mais le forum microsoft est "relativement" moribond.

--

Etienne

10 réponses

1 2 3
Avatar
Fabien LE LEZ
On Mon, 24 Oct 2005 21:09:10 +0200, "Etienne Rousee"
:

Qu'est ce que l'option /GR ?


Tu as perdu la doc ?

À vue de nez, ça doit être une option qui permet de désactiver le
RTTI[*], qui est le mécanisme qui fait que dynamic_cast<> et les
fonctions virtuelles fonctionnent correctement.

Honnêtement, je n'ai pas la moindre idée de l'utilité d'une telle
option. Les programmes dans lesquels le RTTI n'est pas utile ne
doivent pas faire grand-chose de toutes façons, donc n'ont pas besoin
d'être optimisés.


[*] <http://www.google.com/search?&q=rtti>

Avatar
Etienne Rousee
"Fabien LE LEZ" a écrit ...
À vue de nez, ça doit être une option qui permet de désactiver le
RTTI[*], qui est le mécanisme qui fait que dynamic_cast<> et les
fonctions virtuelles fonctionnent correctement.


Merci beaucoup, c'est ça.
Il commence à être un peu tard pour mes neurones :)

--

Etienne

Avatar
Serge Paccalin
Le lundi 24 octobre 2005 à 23:29:03, Etienne Rousee a écrit dans
fr.comp.lang.c++ :

"Fabien LE LEZ" a écrit ...
À vue de nez, ça doit être une option qui permet de désactiver le
RTTI[*], qui est le mécanisme qui fait que dynamic_cast<> et les
fonctions virtuelles fonctionnent correctement.


Merci beaucoup, c'est ça.
Il commence à être un peu tard pour mes neurones :)


En fait, /GR *active* le RTTI, et /GR- le désactive.

--
___________ 25/10/2005 00:02:31
_/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net
_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763


Avatar
kanze
Fabien LE LEZ wrote:
On Mon, 24 Oct 2005 21:09:10 +0200, "Etienne Rousee"
:

Qu'est ce que l'option /GR ?


Tu as perdu la doc ?


Même sans la doc, « cl /help » donne pas mal de renseignements.

Je n'ai pas de VC++ pour l'instant, mais si je régarde dans mes
vieux fichiers make, pour invoquer le compilateur, j'ai :

cl /c /vmg /GR /GX /Gf /J /nologo /Tp source /Fodest

Pour compiler. Plus les options de débogguage ou d'optimisation.
Je ne sais plus à 100% que signifient toutes ses options, mais
je me rappelle bien que je les ai trouvé surtout au moyen de cl
/help, et non d'une doc quelconque.

À vue de nez, ça doit être une option qui permet de désactiver
le RTTI[*], qui est le mécanisme qui fait que dynamic_cast<>
et les fonctions virtuelles fonctionnent correctement.


Si mes souvenirs sont bons, la RTTI, les exceptions, et des
pointeurs à fonction membre sont désactivés on ne marche pas
avec les options par défaut. Dans la liste ci-dessus, je suis
assez sûr que /GR active la RTTI et /GX les exceptions ; je
crois que c'est /vmg pour que les pointeurs à fonction membre
marchent, mais c'est peut-être /Gf. Le /nologo empèche que le
log du build soit rempli des messages bidon, le /Tp était
nécessaire pour que le compilateur traite mes fichiers source en
C++, et non en C, et manifestement, /Fo donne le nom du fichier
objet à générer (qu'il faut donner explicitement, parce que ce
n'est pas dans le même répertoire des sources). Quant à /J, et
celui de /vmg et de /Gf qui n'est pas pour les pointeurs à
fonction membre, je ne m'en souviens plus du tout.

(Note que la liste des options pour g++ est même plus
longue:-) :

g++ -c -std=c++98
-ffor-scope
-fno-gnu-keywords
-foperator-names
-pipe
-Wall
-W
-Wno-sign-compare
-Wno-deprecated
-Wno-non-virtual-dtor
-Wpointer-arith
-Wno-unused
-Wno-switch
source -o dest

Honnêtement, je n'ai pas la moindre idée de l'utilité d'une
telle option. Les programmes dans lesquels le RTTI n'est pas
utile ne doivent pas faire grand-chose de toutes façons, donc
n'ont pas besoin d'être optimisés.


La plupart de mes programmes n'utilisent pas la RTTI. Je dirais
même que son utilisation est assez exceptionnelle. En revanche,
avec une implémentation moderne, son coût est pratiquement
zéro ; je ne vois pas l'intérêt, au moins sur une machine
Windows ou Unix, de la supprimer. (Il a un coût en mémoire, si
on n'a pas de mémoire virtuelle. Je verrais donc l'utilité d'une
telle option sur un compilateur pour un système embarqué.) Mais
enfin, VC++ 6.0, ce n'est pas un système moderne.

--
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


Avatar
Fabien LE LEZ
On 25 Oct 2005 01:27:15 -0700, "kanze" :

La plupart de mes programmes n'utilisent pas la RTTI. Je dirais
même que son utilisation est assez exceptionnelle.


Le mécanisme des fonctions virtuelles n'en fait pas partie ?

Avatar
Paul
Pardon pour le HS, mais le forum microsoft est "relativement" moribond.


Les francophones qui utilisent VC++ se sont regroupés massivement sur ce
forum la :
http://www.developpez.net/forums/viewforum.php?f

Avatar
adebaene
kanze wrote:
Fabien LE LEZ wrote:
On Mon, 24 Oct 2005 21:09:10 +0200, "Etienne Rousee"
:

Qu'est ce que l'option /GR ?


Tu as perdu la doc ?


Même sans la doc, « cl /help » donne pas mal de renseignements.

Je n'ai pas de VC++ pour l'instant, mais si je régarde dans mes
vieux fichiers make, pour invoquer le compilateur, j'ai :

cl /c /vmg /GR /GX /Gf /J /nologo /Tp source /Fodest

Pour compiler. Plus les options de débogguage ou d'optimisation.
Je ne sais plus à 100% que signifient toutes ses options, mais
je me rappelle bien que je les ai trouvé surtout au moyen de cl
/help, et non d'une doc quelconque.

À vue de nez, ça doit être une option qui permet de désactiver
le RTTI[*], qui est le mécanisme qui fait que dynamic_cast<>
et les fonctions virtuelles fonctionnent correctement.



/GR : Active le RTTI (et uniquement le RTTI, le polymorphisme
fonctionne très bien sans, merci pour ui ;-)

/GX : *un* des modes de gestion des exceptions de Visual : le problème
étant que les exceptions C++ de Visual sont implémentées en
s'appuyant sur les "Structured Exceptions" de Windows, et que le
compilo à selon les cas la facheuse tendance à attraper des
Structured exceptions (genre Access Violation) dans des "catch(...)"
qui ne devraient gérer que les exceptions C++. Il smeblerait que cet
ignoble m*£!?; soit (enfin!) mis au propre dans VC8.

/Gf: Définit que les chaines littérales dupliquées dans le code
peuvent être "folded" ensemble, mais peuvent être quand mêm
modifiées. A mon avis, une option dangereuse, entrainant un
comportement non standard (chaines littérales modifiables), et à
éviter... (de toute façon, deprectated dans VC8).

/vmg: Représentation des pointeurs vers membre en prenant toujours la
représentation la plus large possible, ce qui permet de déclarer un
pointeur vers membre d'une classe que l'on a "juste"
forward-déclarée. C'est lié à la représentation "variable" des
pointeurs vers membre de VC, qui essaie de produire le pointeur vers
membre le plus petit possible selon l'héritage de la classe en
question.

/J : "char" est non signé.


Arnaud



Avatar
Fabien LE LEZ
On Tue, 25 Oct 2005 13:35:01 +0200, "Paul" :

Les francophones qui utilisent VC++ se sont regroupés massivement sur ce
forum la :
http://www.developpez.net/forums/viewforum.php?f


Mon dieu mon dieu... Je n'ai jamais réussi à comprendre comment on
peut supporter les forums web, du moins quand on a pris l'habitude de
la puissance des logiciels de news.

Avatar
Paul
Le problême c'est que souvent les forums sont trop lents, mais en
l'occurence celui la est sur un serveur dédié rapide, donc c'est sufisament
rapide à utiliser.

Les forums apportent des avantages que n'ont pas les news, exemples :
- spams supprimés par les modérateurs, et modération des insultes et
diffamation.
- mise en page de ses messages (balise code, etc...)
- édition de ses propres messages
- fonction recherche intégrée
- protection des logins, par exemple : "Luc Hermitte" , profil :
http://www.developpez.net/forums/profile.php?mode=viewprofile&u%406 ,
personne ne pourra "usurper" son identité, alors que les usurpations sont
courantes sur Usenet
- etc...

En fait le traffic forum à déjà dépassé largement le trafic usenet, par
exemple actuellement environ 2000 messages par jours sur les forums
developpez.com.

Certains FAI comme AOL on déjà annoncé la fin du relais des news usenet...

Actuellement le forum usenet C++ est encore très actif, mais beaucoup de
forums Usenet sont devenu morts depuis quelque temps.
Avatar
Fabien LE LEZ
On Tue, 25 Oct 2005 14:56:10 +0200, "Paul" :

Les forums apportent des avantages que n'ont pas les news, exemples :
- spams supprimés par les modérateurs,


Sur Usenet, c'est aussi le cas, du moins sur les serveurs sérieux.

et modération des insultes et diffamation.


S'il y a besoin de ce genre de chose, je préfère ne pas être en
compagnie de ces gens-là...

- mise en page de ses messages (balise code, etc...)


Mouais... C'est vrai que ça manque parfois sur Usenet.
Mais c'est contrecarré par le foutoir dans l'affichage des messages.

- édition de ses propres messages


Ça existe aussi sur Usenet (header "Supersedes").

- fonction recherche intégrée


N'importe quel client news un peu sérieux (style Agent) fait la même
chose.

- protection des logins, par exemple : "Luc Hermitte" , profil :
http://www.developpez.net/forums/profile.php?mode=viewprofile&u%406 ,
personne ne pourra "usurper" son identité,

alors que les usurpations sont courantes sur Usenet


Uh ?
Je ne m'intéresse à Usenet que depuis quelques années
(1998 peut-être ?) mais je ne crois pas avoir vu d'usurpation
d'identité. En tout cas, pas plus d'une fois ou deux.

En prime, ce forum web tourne sous phpbb, moteur surtout connu pour
ses annonces de failles à répétitions. Côté sécurité, on repassera.

En fait le traffic forum à déjà dépassé largement le trafic usenet, par
exemple actuellement environ 2000 messages par jours sur les forums
developpez.com.



Certains FAI comme AOL on déjà annoncé la fin du relais des news usenet...


AOL n'a jamais été un vrai FAI.

Actuellement le forum usenet C++ est encore très actif, mais beaucoup de
forums Usenet sont devenu morts depuis quelque temps.


Malheureusement oui.

Ce qui serait cool, c'est une passerelle pour pouvoir lire les forums
web dans un lecteur de news. Ne serait-ce que pour voir facilement les
relations entre messages (i.e. "tel message est en réponse à tel
autre").
Et tant qu'à faire, la possibilité d'utiliser un éditeur un peu moins
indigent pour rédiger les messages.

1 2 3