iPhone - как заставить #define вернуть двойник? - PullRequest
0 голосов
/ 21 апреля 2011

У меня есть этот метод:

- (double) myMethod (double a, double b) {
  return a * b;
}

этот метод возвращает значение типа double.

Я собираюсь преобразовать это в инструкцию #define, например

#define myMethod(a,b) (a * b)

это определение возвращает двойной?Полагаю, что так, но если я хочу, чтобы он возвращал число с плавающей точкой?

спасибо.

Ответы [ 2 ]

10 голосов
/ 21 апреля 2011

Не делай этого. Просто используйте встроенные функции, такие как

static inline double MyMethod (double a, double b)
{
    return a * b;
}

Так же быстро, меньше головных болей.

4 голосов
/ 21 апреля 2011

A #define - это просто текстовая подстановка, если вы напишите:

myMethod(1, 2)

, она расширится до:

(1 * 2)

Это, очевидно, целое число.

Вы можете написать что-то вроде:

#define myMethod(a,b) ( (double)(a) * (double)(b) )

Чтобы убедиться, что вы получаете двойную операцию с плавающей точкой.

...