Предупреждение «Нет предыдущего прототипа для функции» - PullRequest
45 голосов
/ 16 августа 2011

Я использую программу shareKit to себе.

но в FBConnectGlobal есть предупреждение

NSMutableArray* FBCreateNonRetainingArray() {
  CFArrayCallBacks callbacks = kCFTypeArrayCallBacks;
  callbacks.retain = RetainNoOp;
  callbacks.release = ReleaseNoOp;
  return (NSMutableArray*)CFArrayCreateMutable(nil, 0, &callbacks);
}

как и этот метод, он предупреждает: «Нет предыдущего прототипа для функции FBCreateNonReedingArray»

Ответы [ 4 ]

62 голосов
/ 14 октября 2011

Согласно стандарту c, объявление прототипа как

NSMutableArray* FBCreateNonRetainingArray(void);
//      --------------->                  ^^^^   
// Yes, with the void as the parameter

решает проблему.

49 голосов
/ 12 сентября 2011

Чтобы прояснить ответ Эрика Дчао выше, кто-то в фейсбуке явно не ставил «статический» перед этой БУЛОМ?

В любом случае, переходя с этого

BOOL FBIsDeviceIPad() {
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200
  if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    return YES;
  }
#endif
  return NO;
}

на этот

static BOOL FBIsDeviceIPad() {
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200
  if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    return YES;
  }
#endif
  return NO;
}

исправил это для меня.

28 голосов
/ 24 августа 2011

ОБНОВЛЕНИЕ : отключение предупреждений не является хорошим решением, проверьте ответ @Derek Bredensteiner.

В Xcode 4 перейдите к настройкам сборки вашего проекта. Ищите «прототип». Должна быть опция под названием «Прототипы отсутствующих функций»; отключи его.

через здесь

7 голосов
/ 03 февраля 2012

Это глобальная функция?Добавьте « static », если оно используется только в текущем файле.

Возможная причина указана ниже:

нет предыдущего прототипа для `foo '

Это означает, что GCC нашел глобальное определение функции, не увидев прототипа для функции.Если функция используется более чем в одном файле, в заголовочном файле должен быть прототип для нее.Это предохраняет функции и их использование от синхронизации

Если функция используется только в этом файле, сделайте ее статической, чтобы гарантировать, что она никогда не будет использоваться вне этого файла и документ, что она является локальной функцией

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...