#define

Signaler
Messages postés
117
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
30 mars 2012
-
Messages postés
59
Date d'inscription
samedi 1 janvier 2005
Statut
Membre
Dernière intervention
4 avril 2007
-
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

Messages postés
59
Date d'inscription
samedi 1 janvier 2005
Statut
Membre
Dernière intervention
4 avril 2007

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
Messages postés
117
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
30 mars 2012

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
Messages postés
59
Date d'inscription
samedi 1 janvier 2005
Statut
Membre
Dernière intervention
4 avril 2007

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)]