Что такое макросы?

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