VS 2005: différence de compilation debug/relase? - C++ - Programmation
Marsh Posté le 20-10-2006 à 15:54:43
la priorité des opérateurs ne change jamais en C++. C'est toujours la même qu'en C.
Marsh Posté le 20-10-2006 à 22:56:14
jesus_christ a écrit : la priorité des opérateurs ne change jamais en C++. C'est toujours la même qu'en C. |
Ben oui j'espere bien... Idem elle ne devrait pas non plus changer en mode debug ou release
Marsh Posté le 21-10-2006 à 00:04:29
en l'occurence, si kBtnRight & kBtnLeft sont des constantes, un:
if( (ASystem::GetButtonsState()&kBtnRight) | kBtnLeft )
n'est pas logique. autant écrire if(1)
Marsh Posté le 23-10-2006 à 09:48:22
Es-tu sûr de ce que tu annonces ?
J'ai testé ce qui suit en "Release" et "Debug" avec MS-VS 2005 Pro et cela me retourne toujours "Release"...
Code :
|
Marsh Posté le 23-10-2006 à 10:20:24
bb138 a écrit :
|
Les tests booléens, c'est plutôt '&&' ou '||' ou ca n'a rien à voir avec la question ?
Marsh Posté le 23-10-2006 à 11:24:08
bb138 a écrit : Es-tu sûr de ce que tu annonces ? |
Marsh Posté le 23-10-2006 à 11:37:19
_darkalt3_ a écrit : Les tests booléens, c'est plutôt '&&' ou '||' ou ca n'a rien à voir avec la question ? |
ah oui ok on parle de masques
Marsh Posté le 23-10-2006 à 13:28:12
breizhbugs > Je suis tout à fait d'accord avec toi mais si tu reprends le post initial :
Code :
|
Avec ce fontionnement, mon bout de code aurait donné :
- En release : ce que tu as décrit ( 100 & 001 = 000 et 000 | 010 = 010 donc toujours vrai)
- En Debug : d'après le fonctionnement décrit par jimko : ( 100 & ( 001 | 010)) -> 100 & 011 = 000 donc toujours faux... ce que je dis ne pas avoir retrouvé.
D'où ma question pour savoir s'il est vraiment sûr de ce qu'il annonce.
Marsh Posté le 23-10-2006 à 13:58:49
ce que j'ai annoncé c'est ce que tu as prouvé par la suite
(comprends pas là)
Marsh Posté le 23-10-2006 à 14:03:27
moi ce que j'annonce c'est qu'écrire:
( (ASystem::GetButtonsState()&kBtnRight) | kBtnLeft)
c'est écrire un bug
Marsh Posté le 23-10-2006 à 14:40:27
bjone > je suis d'accord avec toi (non non ce n'est pas vrai je ne suis pas toujours d'accord avec tout le monde !)
... Je pense que jimko a du faire une boulette quand il a testé son code en "Debug" et "Release"...
Marsh Posté le 23-10-2006 à 15:51:31
ReplyMarsh Posté le 27-10-2006 à 18:28:59
bjone a écrit : oué c'est bizarre son truc (il aurait ptet une beta ) |
Skuzez moi j'étais en vacances imprévues (ça arrive!)
Bon déjà, bien évidemment je n'ai jamais voulu écrire ça (sinon faut changer de métier!)... J'avais ajouté le deuxieme bit "kBtnLeft" à la va-vite et sans faire gaffe, et ce qui m'a laissé perplexe c'est que je ne m'en suis rendu compte qu'en passant bien plus tard en mode release, alors qu'en debug ca faisait ce que je voulais à la base, et non ce que ca aurait du faire...
Sauf que ... j'avais du boire ce jour-la faut croire! Impossible à renouveler en effet, j'ai pas l'air con là! désolé...
La seule explication a part mon cerveau en version beta lui-meme, c'aurait été que kBtnLeft vale 0 en mode debug, et 1 en mode release!...
Et personne n'y a pensé? okok je détourne la conversation, et je ne pense pas avoir jamais fait dependre mes constantes du mode de debug!
Oups, merci quand meme!
Marsh Posté le 28-10-2006 à 02:09:08
ça arrive.
moi j'ai déjà cherché un bug jusqu'à 5 heures du mat pour m'apercevoir le lendemain (après-midi) que j'avais tout ruiné
Marsh Posté le 20-10-2006 à 11:31:28
Hello world,
Bon, OK j'ai oublié le parenthésage sur ce coup, mais surtout je suis tombé sur un truc louche!
En cherchant pourquoi ca ne passait pas bien en release, il semblerait bien que Visual Studio C++ Pro 2005 évalue l'expression différemment selon le mode (debug/release)!
Je n'ai pas (encore) touché aux flags de compilation, et quand bien meme, inverser le sens d'évaluation des expressions me semble impossible (ou en tout cas complètement suicidaire!).
C'est passqu'il ne m'aime pas ou ca le fait chez vous aussi?
Ca fait peur ça!