Предупреждение "Предыдущий прототип для функции" - программирование
Подтвердить что ты не робот

Предупреждение "Предыдущий прототип для функции"

Я использую shareKit для себя.

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

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

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

4b9b3361

Ответ 1

Чтобы прояснить, что Эрик Дхао ответил выше, кто-то из facebook, по-видимому, не поставил "статический" перед этим BOOL?

В любом случае, изменяясь от этого

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;
}

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

Ответ 2

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

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

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

Ответ 3

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

В Xcode 4 перейдите к настройкам сборки проекта. Найдите "prototype". Должна быть опция "Пропущенные прототипы функций"; отключите его.

через здесь

Ответ 4

Является ли это глобальной функцией? Добавьте " статический", если он используется только в текущем файле.

Возможная причина следующая:

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

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

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