Подтвердить что ты не робот

Встроенная функция "undefined symbol" error

Я хочу написать встроенную функцию, но я получаю сообщение об ошибке. Как я могу это исправить?

Информация об ошибке:

Undefined symbols for architecture i386:
  "_XYInRect", referenced from:
      -[BeginAnimation ccTouchesEnded:withEvent:] in BeginAnimation.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

код:

CGPoint location = CGPointMake(60, 350);

if (XYInRect(location, 53, 338, 263, 369)) {

}

inline BOOL XYInRect(CGPoint location, float MixX, float MixY, float MaxX ,float MaxY){
    if (location.x >MixX && location.y >MixY && location.x <MaxX && location.y <MaxY) {
        return YES;
    } else {
        return NO;

    }
}
4b9b3361

Ответ 1

Clang по умолчанию используется для C99, а не GNU sematics, что означает, что raw inline отличается от static inline и extern inline.

В частности, raw inline означает, что функция по-прежнему имеет внешнюю связь, но встроенное определение не обеспечивает внешний (для этого вам потребуется extern inline).

Это означает, что вам нужно дополнительное определение extern в другом блоке перевода или сбой связи. Однако вы, вероятно, ищете static inline.

Ответ 2

Я думаю, что XYInRect() должно быть известно до использования. Перед вызовом переместите определение функции в какое-то место в файле.

Ответ 3

Также предлагается использовать CGRectContainsPoint