Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[STL] désactiver les exceptions

11 réponses
Avatar
David Alloza
Bonjour,
Compilateur utilisé: Visual studio C++ .NET 2003 (VC7)
STL utilisées: STL Hewlett-Packard V3.13:009 (version fournie de base avec
Visual Studio).
mode d'inclusion de la CRT: debug-multithreaded-dll
voila mon problème.
Nous avons une application qui pour des raisons de performance ou de
portabilité sur des plateformes embarquées a besoin de désactiver les
exceptions.


Pour ce qui est de désactiver les exceptions dansle code des STL nous
utilisons la commande préprocesseur suivante:
#define _HAS_EXCEPTIONS 0
et ceci avant l'inclusion des headers de STL.

ce qui nous donne droit aux message d'erreur suivants a la compilation
typeinfo.h(59) : error C2504: 'exception' : base class undefined
typeinfo.h(66) : error C2504: 'exception' : base class undefined
ostream(604) : fatal error C1903: unable to recover from previous error(s);
stopping compilation

Alors, si un aimable participant de ce forum a deja rencontré ce problème et
a une piste a proposer, et bien ça débloquerai la situation.

Cordialement,
David ALLOZA.

10 réponses

1 2
Avatar
adebaene
David Alloza wrote:
Bonjour,
Compilateur utilisé: Visual studio C++ .NET 2003 (VC7)
VC 7.1 (2003) ou bien VC 7.0 (2002) ???


STL utilisées: STL Hewlett-Packard V3.13:009 (version fournie de base a vec
Visual Studio).
Non : Visual C++ est fourni avec la STL de Dinkumware, pas avec celle

de HP.

mode d'inclusion de la CRT: debug-multithreaded-dll
voila mon problème.
Nous avons une application qui pour des raisons de performance ou de
portabilité sur des plateformes embarquées a besoin de désactiver l es
exceptions.
Si vous avez besoin de performances, commence par te lier à la CT

release, et pas debug! (au passage, il est illégal de redistribuer les
versions DLL-debug de la CRT).


Pour ce qui est de désactiver les exceptions dansle code des STL nous
utilisons la commande préprocesseur suivante:
#define _HAS_EXCEPTIONS 0
et ceci avant l'inclusion des headers de STL.

ce qui nous donne droit aux message d'erreur suivants a la compilation
typeinfo.h(59) : error C2504: 'exception' : base class undefined
typeinfo.h(66) : error C2504: 'exception' : base class undefined
ostream(604) : fatal error C1903: unable to recover from previous error(s );
stopping compilation

Alors, si un aimable participant de ce forum a deja rencontré ce probl ème et
a une piste a proposer, et bien ça débloquerai la situation.


N'étant pas sûr de la version de la STL que tu utilises, je ne me
prononcerais pas...

Ceci-dit, si tu nous montrais un bout de code (notamment quels headers
de la STL sont #inclus dans ton programme), ca pourrait aider à te
donner une solution.

Arnaud

Avatar
David Alloza
Merci de vous intéresser a mon problème.

On prend dans l'ordre:
bon, voila ce que j'ai comme copyright dans mes fichiers de STL:

/*
* Copyright (c) 1992-2002 by P.J. Plauger. ALL RIGHTS RESERVED.
* Consult your license regarding permissions and restrictions.
V3.13:0009 */
il sagit a priori des STL que nous avons dans la distribution de base de
visual studio .NET 2003.

Si vous avez besoin de performances, commence par te lier à la CT
release, et pas debug! (au passage, il est illégal de redistribuer les
versions DLL-debug de la CRT).


Oui, bien sur.. mais comme toutes nos configurations de projet doivent
fonctionner, j'ai commencé avec la version debug, les versions release etant
pour plus tard. Du coup j'ai aussi testé en mode release, et j'ai exactement
les mêmes erreurs de compilation.

Alors pour enlever toute ambiguité, j'ai tout simplement crée un petit
projet a coté, et ait mis le code minimal qui ne compile pas, le voila:

#define _HAS_EXCEPTIONS 0
#include <string>
int main()
{
return 0;
}

Compiling...
main.cpp
c:Program FilesMicrosoft Visual Studio .NET
2003Vc7includetypeinfo.h(59) : error C2504: 'exception' : base class
undefined
c:Program FilesMicrosoft Visual Studio .NET
2003Vc7includetypeinfo.h(66) : error C2504: 'exception' : base class
undefined


Voila.

Avatar
Sylvain
David Alloza wrote on 13/07/2006 15:36:
Bonjour,
Compilateur utilisé: Visual studio C++ .NET 2003 (VC7)


has been ! et pas très bon, il y a pas mal de choses entre 2 eaux dans
cette distrib. optez définitivement pour la version 2005.

Pour ce qui est de désactiver les exceptions dansle code des STL nous
utilisons la commande préprocesseur suivante:
#define _HAS_EXCEPTIONS 0
et ceci avant l'inclusion des headers de STL.


la version 4.05:0009 ((c) 1992-2005 by P.J. Plauger) distribuée avec
vc2005 compile correctemenr <string> sans les exceptions (en fait il
définit des macros minimales).

notez que <vector>, cité dans votre autre fil, ne compile sans les
exceptions.

Sylvain.

Avatar
John Deuf
David Alloza :

/*
* Copyright (c) 1992-2002 by P.J. Plauger. ALL RIGHTS RESERVED.
* Consult your license regarding permissions and restrictions.
V3.13:0009 */
il sagit a priori des STL que nous avons dans la distribution de base
de visual studio .NET 2003.


Quel rapport avec H.P. ?

P.J. Plauger est le président de Dinkumware.
http://www.plauger.com/
http://www.dinkumware.com/

Avatar
Arnaud Meurgues
David Alloza wrote:
Alors pour enlever toute ambiguité, j'ai tout simplement crée un petit
projet a coté, et ait mis le code minimal qui ne compile pas, le voila:

#define _HAS_EXCEPTIONS 0
#include <string>
int main()
{
return 0;
}


J'ai la même erreur.

Par ailleurs, visiblement, c'est une option non documentée et non
supportée par Microsoft :
http://www.codecomments.com/message605245.html

Le seul moyen me semble tout de même d'envoyer un bug report à
Microsoft. Apparemment, ils le supportent tout de même un minimum :
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID˜637

--
Arnaud

Avatar
kanze
John Deuf wrote:
David Alloza :

/*
* Copyright (c) 1992-2002 by P.J. Plauger. ALL RIGHTS RESERVED.
* Consult your license regarding permissions and restrictions.
V3.13:0009 */
il sagit a priori des STL que nous avons dans la distribution de base
de visual studio .NET 2003.


Quel rapport avec H.P. ?


Stepanov était chez H.P. quand il a développé la STL.
Pratiquement toutes les implémentations de la STL se sont basées
sur ses sources, et dépend aussi du copyright HP (même si
depuis, les sources ont beaucoup évoluées).

--
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
Pierre THIERRY
Le Thu, 13 Jul 2006 15:36:46 +0200, David Alloza a écrit :
Nous avons une application qui pour des raisons de performance ou de
portabilité sur des plateformes embarquées a besoin de désactiver les
exceptions.


Étant donné que j'aimerais développer, dans l'année qui vient, sur de
l'embarqué, ça m'intéresse : comment avez-vous mesuré l'impact des
exceptions ? Quels ont été les résultats ?

Curieusement,
Nowere man
--

OpenPGP 0xD9D50D8A

Avatar
Stan
"Pierre THIERRY" a écrit dans le message de
news:
Nous avons une application qui pour des raisons de performance ou de
portabilité sur des plateformes embarquées a besoin de désactiver les
exceptions.


Étant donné que j'aimerais développer, dans l'année qui vient, sur de
l'embarqué, ça m'intéresse : comment avez-vous mesuré l'impact des
exceptions ? Quels ont été les résultats ?



L'une des difficultés liée aux exceptions est expliquée
ici, question No 8 :
( c'est très succinte !)

http://www.caravan.net/ec2plus/question.html

Maintenant, étant donné la puissance ( vitesse / mémoire )
des systèmes embarqués, les choix dont il est question
sont discutables...

--
-Stan


Avatar
Stan
"Pierre THIERRY" a écrit dans le message de
news:
Nous avons une application qui pour des raisons de performance ou de
portabilité sur des plateformes embarquées a besoin de désactiver les
exceptions.


Étant donné que j'aimerais développer, dans l'année qui vient, sur de
l'embarqué, ça m'intéresse : comment avez-vous mesuré l'impact des
exceptions ? Quels ont été les résultats ?



Pour aborder le C++ en embarqué,
cet article de Stroustrup peut s'averer utile :

http://www.research.att.com/~bs/esc99.html

--
-Stan


Avatar
Sylvain
Pierre THIERRY wrote on 18/07/2006 10:35:

Étant donné que j'aimerais développer, dans l'année qui vient, sur de
l'embarqué, ça m'intéresse : comment avez-vous mesuré l'impact des
exceptions ? Quels ont été les résultats ?


sur quel embarqué ? un µcontroleur, un DSP, un PDA ? hormi sur le
dernier la question même du recours à la STL sera réglée avant le
problème des perfs.

Sylvain.

1 2