Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1446 connectés 

  FORUM HardWare.fr
  Programmation

  [Visual C++ 6] Gestion des overflows

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Visual C++ 6] Gestion des overflows

n°20787
korben
Posté le 27-03-2001 à 16:37:56  profilanswer
 

Salut
Vous savez ou je peux demander au compilateur vérifier les overflows. Autrement dit, vérifier que si:
 
unsigned char val (0->255);
 
val=255;
val++ =>ERROR ERROR ERROR
alors que sinon, val devient 0;
 
Merci
@+

mood
Publicité
Posté le 27-03-2001 à 16:37:56  profilanswer
 

n°20788
BENB
100% Lux.
Posté le 27-03-2001 à 16:44:02  profilanswer
 

Dans visual il me semble qu'il y avait une methode a remplacer. Elle est appellee en cas d'erreur mathematique. Le simple fait de l'ajouter a ton projet devrait suffir, cherche dans l'aide _math_exception il me semble.

n°20831
korben
Posté le 27-03-2001 à 20:44:01  profilanswer
 

Merci d'avoir pris du temps à me répondre, mais cela ne m'aide pas bcp. Il ne s'agit pas de code directement, mais plutot d'option de compilation. Pareil que les "assert" mais que le test soit fait à chaque accès à la variable.
Merci
@+

n°20833
SoWhatIn22
Posté le 27-03-2001 à 20:51:30  profilanswer
 

ce qu'il faut que tu fasses, c'est que dans le fonction dans laquelle tu fais l'appel qui peut provoquer un overflow, tu dois intercepter les exceptions.
donc un bon vieux try{} catch(){} des familles.
 
Et si tu as une exceptions, tu regardes si celles-ci est due à un overflow ou pas.
 
Tu peux faire ca à chaque appel d'une fonction.
 
Pour info:
0xC0000091 EXCEPTION_FLT_OVERFLOW  
The result was too big to represent
 
je ne crois pas qu'il y ait d'autre moyen. Mais peut être que je me trompe.
 
ceci dit, les assert c'est pas qu'une option de compilation... Puisque c'est toi qui doit les inclure un par un dans ton code...

n°20834
SoWhatIn22
Posté le 27-03-2001 à 20:52:36  profilanswer
 

qu'est-ce que je peux peux faire comme fautes d'orthographe quand je commence à fatiguer.
Allez hop, on rentre à la maison ;-þ

n°20858
korben
Posté le 27-03-2001 à 23:00:03  profilanswer
 

Attendez, je ne sais pas si c'est moi qui m'explique mal ou si vous ne me comprenez pas.
Lorsque on insert un assert dans du code, il est compilé avec le code uniquement dans certaine condition (mode debug et non pas release par exemple).
Je ne veux pas devoir rajouter du code. Je veux juste que le compilateur vérifie que jamais une variable soit en situation d'overflow.Ce que j'appelle overflow, c'est lorsque, par exemple, pour une variable définie dans un type permettant des valeurs de 0->255 (unsigned char), on incrément la valeur alors qu'elle était déja au maximum (ou invers.). Dans mon exemple, la variable passe à 0 et non pas 256. J'aimerais donc que le compilateur vérifie à chaque nouvelle affectation, la valeur que j'écris. Mais l'option doit pouvoir evidemment etre enlevé au moment de la compilation finale (release) Je sais que cela existe avec certains compilateur sous unix, je cherche la même chose mais sous Visual C++ 6.0
Voilà
Merci

n°20878
janoscoder
Posté le 28-03-2001 à 01:07:44  profilanswer
 

les header limits ou climits définissent les limites de chaque type.
on a FLT_MAX,DBL_MAX, INT_MAX...
et après on checke à la main.
 
sinon y'a des méthodes qui doivent marcher avec des templates
pour les types entiers, c'est pas trop dur sans passer pas là
il faut juste savoir qu'en non signé:
valmax = (unsigned type)(-1)
 
et d'ailleurs en unsigned
(1<<(sizeof(type)-2))-1+(1<<(sizeof(type)-2))
ça marche

n°20882
gilou
Modérateur
Modzilla
Posté le 28-03-2001 à 03:29:53  profilanswer
 

Je chercherais dans la doc du cote des #pragmas, plutot qu'une option de compil.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°21048
BENB
100% Lux.
Posté le 28-03-2001 à 14:45:09  profilanswer
 

J'avoue ne pas comprendre ton probleme :
-Tu voudrais verifier les overflow a la compil ? c'est typiquement une erreur run time. meme si le compilo le fait il ne verra que les plus betes...
 
-Sans ajouter de code copiler explictement la fonction _math_exception et y mettre un point d'arret devrait repondre a ta question il me semble ?

n°21050
BENB
100% Lux.
Posté le 28-03-2001 à 14:48:44  profilanswer
 

janoscoder a écrit a écrit :

les header limits ou climits définissent les limites de chaque type.
on a FLT_MAX,DBL_MAX, INT_MAX...
et après on checke à la main.
 
sinon y'a des méthodes qui doivent marcher avec des templates
pour les types entiers, c'est pas trop dur sans passer pas là
il faut juste savoir qu'en non signé:
valmax = (unsigned type)(-1)
 
et d'ailleurs en unsigned
(1<<(sizeof(type)-2))-1+(1<<(sizeof(type)-2))
ça marche




 Le plus simple c'est numeric_limits<type>::max()

mood
Publicité
Posté le 28-03-2001 à 14:48:44  profilanswer
 

n°21220
korben
Posté le 29-03-2001 à 08:21:00  profilanswer
 

Je veux que le compilateur rajoute automatiquement du code pour vérifier l'affectation des variables. Et ainsi, lorsque mon code est garantie sans erreur, je peux virer cette option à la compil., recompiler et VOILA.
Je sais que cela existe sous d'autres compilateur, a 100%. Maintenant, sous Visual C++?
Je regarderai pour le math exception, mais... je ne dois pas devoir rajouter du code à chaque nouveau fichier cpp.
@+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Visual C++ 6] Gestion des overflows

 

Sujets relatifs
Doc Visual Agej'ai un probleme pour lire les bmp sous visual C++
[Visual C++] Problème avec un programme simple[Visual C++] Comment ajouter un .h au projet?
[JAVA] Gestion de la molette ??Pb Déclaration attribut Visual C++
Pb Déclaration attribut Visual C++Algo pour gestion de couleur
traducteur pascal-visual C++ ou VB ???visual c++ et templates. pb de link...
Plus de sujets relatifs à : [Visual C++ 6] Gestion des overflows


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR