Предупреждение "Предыдущий прототип для функции"
Я использую shareKit для себя.
но в FBConnectGlobal есть предупреждение,
NSMutableArray* FBCreateNonRetainingArray() {
CFArrayCallBacks callbacks = kCFTypeArrayCallBacks;
callbacks.retain = RetainNoOp;
callbacks.release = ReleaseNoOp;
return (NSMutableArray*)CFArrayCreateMutable(nil, 0, &callbacks);
}
как этот метод, он предупреждает: "Нет предыдущего прототипа для функции FBCreateNonRetainingArray"
Ответы
Ответ 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 обнаружил глобальное определение функции, не видя прототипа функции. Если функция используется более чем в одном файле, в файле заголовка должен быть прототип. Это предотвращает синхронизацию функций и их использования.
Если функция используется только в этом файле, сделайте ее статической, чтобы гарантировать, что она никогда не будет использоваться вне этого файла и документирует ее локальную функцию