Как обрабатывать предупреждение Xcode "нет предыдущего прототипа для функции..."?

Это предупреждение выдает кучу в некоторых сторонних библиотеках.

Есть ли способ справиться с этим без изменения кода (например, игнорировать предупреждение)?

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

Здесь один из блоков кода, вызывающих предупреждение:

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

Ответ 1

Обычно с такими предупреждениями можно просто определить прототип функции в верхней части файла, например:

BOOL FBIsDeviceIPad();

Но в C метод без ничего между фигурными скобками, т.е. () на самом деле означает, что существует произвольное количество параметров. Вместо этого определение должно быть (void) для обозначения параметров no:

BOOL FBIsDeviceIPad(void);

...

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

Ответ 2

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

Ответ 3

Нет предупреждений, если такая функция определена как встроенная.

Это может быть достаточно, если ваша функция оптимизирована для встроенного использования. http://msdn.microsoft.com/en-us/library/1w2887zk.aspx