Возвращаемый тип встроенной функции

#iphone #c #objective-c #c #cocos2d-iphone

#iPhone #c #objective-c #c #cocos2d-iphone

Вопрос:

Этот метод в Cocos2d:

 /** Returns opposite of point.
 @return CGPoint
 @since v0.7.2
 */
static inline CGPoint
ccpNeg(const CGPoint v)
{
    return ccp(-v.x, -v.y);
}
  

Почему после inline написано ‘CGPoint’? Почему бы и нет

 static inline ccpNeg(...
  

?

Комментарии:

1. @Javoid — возможно, вам нужно прочитать базовую книгу по программированию на ObjectiveC, C или C .

2. Уже ответил. Почему я должен ждать 10 минут, чтобы нажать на ответ?

3. Вероятно, для того, чтобы другие люди имели справедливую долю в ответе на вопрос.

4. Да, но тогда, когда на вопрос есть хороший ответ, это заставляет других тратить свое время на его чтение. Хорошо и плохо, я думаю.

5. Стивен Си был некрасив, но это факт, что ваш заголовок ссылается на «возвращаемый тип», а комментарий к функции гласит «return CGPoint», и все же вы спрашиваете, почему существует возвращаемый тип и почему его просто не опустить, что наводит на мысль о каком-то элементарном недоразумении.

Ответ №1:

Потому что функция хочет вернуть CGPoint.

Комментарии:

1. О, ну, это было очевидно. =( Я ненавижу, когда я пропускаю что-то подобное.

Ответ №2:

static указывает связь функции и inline подсказывает компилятору, что функция должна быть встроенной. Ни один из них не является типом возврата функции, который должна иметь каждая функция (даже если это void ). CGPoint — тип возвращаемого значения функции.

Ответ №3:

CGPoint это возвращаемый тип функции.

Если бы вы только что написали static inline ccpNeg , компилятор не знал бы, какой тип объекта возвращает функция ( static и inline — это просто модификаторы, сообщающие компилятору, что он должен встроить функцию; вам все равно нужен возвращаемый тип независимо от этого).