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

 


Dernière réponse
Sujet : [C++] Dynamic_cast sans RTTI ....
leander ah ok, je vois.
En effet c'est vrai que ça pourrait marcher comme ceci.
Mais comme j'ai déjà pas mal de code écrit avec mes assert sous forme de printf je vais peut-être pas tout changer.
 
Mais bon, c'est pas très grave. Une fois un assert déclenché il suffit de remonter d'un cran dans la pile des fonctions pour trouver l'erreur.
 
C'est juste que je me disais qu'il y avait peut-être une bidouille qui me permettrait de changer l'ordre d'execution pour pouvoir mettre le int 3 dans le cpp.
 
Mais les compilos on leur limites par rapport aux bidouilles ;)
 
PS : remarquer que sur ce problème, j'ai juste besoin que ça marche sous Visual C++.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
leander ah ok, je vois.
En effet c'est vrai que ça pourrait marcher comme ceci.
Mais comme j'ai déjà pas mal de code écrit avec mes assert sous forme de printf je vais peut-être pas tout changer.
 
Mais bon, c'est pas très grave. Une fois un assert déclenché il suffit de remonter d'un cran dans la pile des fonctions pour trouver l'erreur.
 
C'est juste que je me disais qu'il y avait peut-être une bidouille qui me permettrait de changer l'ordre d'execution pour pouvoir mettre le int 3 dans le cpp.
 
Mais les compilos on leur limites par rapport aux bidouilles ;)
 
PS : remarquer que sur ce problème, j'ai juste besoin que ça marche sous Visual C++.
BENB

leander a écrit a écrit :

 
 
c'est ironique ?
parce que sinon, je vois pas trop ce que tu veux dire.  




Ton probleme vient de ta liste d'arguments dont la longueur n'est pas fixe... ce qui t'oblige a faire l'appel a ta fonction en dernier et donc a retourner l'ordre d'execution (que la fin de la macro soit execute en premier...
 
En supprimant cette liste a longueur variable tu supprime le Pb
 
Regarde par exemple du cote des Flux tu pourrait avoir un appel du style
ASSERT ("Pb de macro ligne"<<noline<<"colone"<<nocol<<endl, test);
 
ce qui reconstitue l'aspect liste d'argument a nombre variable, mais ou il n'y en a que deux en faits...

leander

youdontcare a écrit a écrit :

wow :lol:
 
et t'as pas moyen de passer une structure qui stocke les paramètres, ou encore par une string ?
 
(histoire de n'avoir qu'un seul paramètre)  




 
c'est ironique ?
parce que sinon, je vois pas trop ce que tu veux dire.

BENB

leander a écrit a écrit :

ben c'est presque comme celle que j'ai fait.
 
Et j'ai essayé de compiler la macro que tu as fait, mais ça ne marche pas mieux avec VC++.
 
Tu arrives à compiler toi ?
 
PS : faut mettre "bool result" à la place de "bool b"  




Ben a la maison j'ai pas de compilo...
Et au boulot, le __asm machin chose, mes stations Sun je ne crois pas qu'elles vont aimer!

youdontcare wow :lol:
 
et t'as pas moyen de passer une structure qui stocke les paramètres, ou encore par une string ?
 
(histoire de n'avoir qu'un seul paramètre)
leander ben c'est presque comme celle que j'ai fait.
 
Et j'ai essayé de compiler la macro que tu as fait, mais ça ne marche pas mieux avec VC++.
 
Tu arrives à compiler toi ?
 
PS : faut mettre "bool result" à la place de "bool b"
BENB La macro doit ressembler a ca
 
#define ASSERT bool b; \
  ((result && __asm{int 3}),result) = result = fct_assert  
 
je ne vois pas vraiment le Pb sinon le fait que __asm ne renvoie rien...
 
#define ASSERT bool b; \
  ((result && (__asm{int 3},true)),result) = result = fct_assert  
 
ou je remplace le __asm{int 3} par un operateur virgule
(__asm{int 3},true)... qui lui renvoie quelque chose....
 
bon deja au depart c'etait pas genial, maintenant c'est completement illisible.

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)