#define

infodaoudi Messages postés 117 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 30 mars 2012 - 28 nov. 2006 à 17:19
clempar55 Messages postés 59 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 4 avril 2007 - 28 nov. 2006 à 19:31
Bonjour,
ca veut dire quoi
#define

ADD_VALID_BELIEF(beliefTotal, beliefAdded) \beliefTotal += (1.f - beliefTotal) * (beliefAdded); \

ASSERT(0.f <= beliefTotal && beliefTotal <= 1.f)

 

#define

ADD_BELIEF(beliefTotal, beliefAdded) \ADD_VALID_BELIEF(beliefTotal, normalizeBelief(beliefAdded))

j'arrive pas à interpreter les deux instruction avec le define, plz expliquer moi ce que veut dire les deux instructions?

merci pour tt comentaire

3 réponses

clempar55 Messages postés 59 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 4 avril 2007
28 nov. 2006 à 17:45
Ces deux instruction créent des macros nommées ADD_VALID_BELIEF et ADD_BELIEF
.
En gros, quand le préprocesseur (qui est appellé pendant la compilation) voit l'instruction

        ADD_BELIEF(UneVariable,UneAutreVariable);

dans le code qui suit ces deux declarations, il le remplace par

     ADD_VALID_BELIEF(
UneVariable
, normalizeBelief(
UneAutreVariable
));

qui est ensuite remplacé par

    (
UneVariable

+= (1.f - (
UneVariable

) * (normalizeBelief(
UneAutreVariable
)
);
    ASSERT(0.f < = (
UneVariable

&& (
UneVariable
<= 1.f
0
infodaoudi Messages postés 117 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 30 mars 2012
28 nov. 2006 à 18:03
Donc, si j'ai bien compris, dans le reste du code je trouve l'instruction : ADD_BELIEF(belief.belief, beliefSizePos); elle sera remplacer par :

belief.belief+= (1.f - belief.belief) * (beliefSizePos); \

ASSERT(0.f <= belief.belief && belief.belief<= 1.f)
c'est bien ca ? corriger moi si je me trompe.

merci
0
clempar55 Messages postés 59 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 4 avril 2007
28 nov. 2006 à 19:31
elle sera remplacée par

belief.belief+= (1.f - belief.belief) * normalizeBelief (beliefSizePos);  //ici pas de '\'
ASSERT(0.f < = belief.belief && belief.belief<= 1.f);

car le caractère '\' sert ici uniquement a indiquer un retour a la ligne dans la définition de la macro

[ rectification de mon premier post: la dernière ligne est
ASSERT(0.f < = UneVariable

&& UneVariable
<= 1.f);

il y a des parenthèses en trop (ouu le vilain copier-coller)]
0