#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
— это просто модификаторы, сообщающие компилятору, что он должен встроить функцию; вам все равно нужен возвращаемый тип независимо от этого).