#objective-c #macros
#objective-c #макросы
Вопрос:
Я не уверен, что такое макросы. Например, следующий макрос находится во фреймворке cocos2d, написанном на objective-c. Что именно такое макрос, почему они полезны и как мне их определить? Спасибо.
#define CCRANDOM_0_1() ((random() / (float)0x7fffffff ))
Ответ №1:
Здесь вы найдете все, что вам нужно:http://gcc.gnu.org/onlinedocs/cpp/Macros.html
Но чтобы получить основную идею, это фрагменты кода, которые заменяют имя макроса, когда вы записываете их в свой код.
В вашем примере, если вы написали:
int i = CCRANDOM_0_1();
Это было бы то же самое, что:
int i = ((random() / (float)0x7fffffff ));
Комментарии:
1. Итак, этот пример представляет собой способ генерации случайного числа. Я думаю, поскольку это делается достаточно часто, полезно записать это в виде ярлыка, подобного этому?
2. Да, по двум причинам. Во-первых, чтобы избежать дублирования этого кода каждый раз, когда вам нужно случайное число, и, во-вторых, чтобы избежать накладных расходов путем вызова нестрочной функции.
3. @Victor: Как вы устанавливаете диапазон? например, для 0-15
Ответ №2:
это просто замените CCRANDOM_0_1()
на ((random() / (float)0x7fffffff ))
в вашем коде
Ответ №3:
Всякий раз, когда CCRANDOM 0_1()
в программе появляется (компилятором), оно будет заменено на ((random() / (float)0x7fffffff ))