2011-06-03 4 views
1

Je ne suis pas sûr de ce que sont les macros. Par exemple, la macro suivante est trouvée dans la structure cocos2d écrite dans objective-c. Qu'est-ce qu'une macro, pourquoi sont-ils utiles et comment les définir? Merci.Que sont les macros?

#define CCRANDOM_0_1() ((random()/(float)0x7fffffff)) 

Répondre

2

Vous trouverez ici tout ce dont vous avez besoin: http://gcc.gnu.org/onlinedocs/cpp/Macros.html

Mais pour avoir une idée de base, ils sont des morceaux de code qui remplacent le nom de la macro lorsque vous les écrivez dans votre code.

Dans votre exemple, si vous avez écrit:

int i = CCRANDOM_0_1(); 

Ce serait la même chose que:

int i = ((random()/(float)0x7fffffff)); 
+0

Donc, cet exemple est un moyen de générer un nombre aléatoire. Je suppose que puisque c'est fait assez souvent, il est utile de l'écrire comme un raccourci comme ça? – lampShade

+0

Oui, pour deux raisons. D'abord pour éviter de dupliquer ce code chaque fois que vous avez besoin d'un nombre aléatoire, et ensuite pour éviter les frais généraux en appelant une fonction non-inline. – Victor

+0

@Victor: Comment définissez-vous la plage? par exemple 0 - 15 –

2

il suffit de remplacer CCRANDOM_0_1() avec ((random()/(float)0x7fffffff)) dans votre code

1

Chaque fois que CCRANDOM+0_1() est vu dans le programme (par le compilateur) il sera remplacé par ((random()/(float)0x7fffffff))