2011-08-17 6 views
41

Esta advertencia está apareciendo un montón en algunas bibliotecas de terceros.¿Cómo manejar la advertencia de Xcode "sin prototipo previo para la función ..."?

¿Hay alguna manera de manejarlo sin modificar el código (por ejemplo, ignorar la advertencia)?

Si tengo que modificar el código para corregirlo, ¿cómo lo hago?

Aquí está uno de los bloques de código que está causando una advertencia:

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

Respuesta

79

lo general, con las advertencias de este tipo sólo puede definir un prototipo de función en la parte superior de su archivo, por ejemplo:

BOOL FBIsDeviceIPad(); 

Pero en C un método sin nada entre las llaves, es decir () implica en realidad hay un número arbitrario de parámetros. En cambio, la definición debe convertirse en (void) para denotar sin parámetros:

BOOL FBIsDeviceIPad(void); 

... 

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

Me molesta mucho con esta advertencia, y la palabra clave "nulo" en la definición de métodos C explica todo. –

+0

Yo también estoy molesto: para hacer que mi proyecto funcionara sin advertencias, tuve que cambiar el código de algo que no era mío: glew.c. Sé que puedo construir una biblioteca desde allí y vincularlo con el proyecto, pero es fácil agregar glew.c. ¡Gracias por la ayuda! – scippie

+0

para todos los que todavía están molestos por este problema, actualice su SDK de Facebook. La nueva versión ya no tiene este problema. – Raptor

29

En Xcode4, ir a la configuración de generación de su proyecto. Busque "prototipo". Debería haber una opción llamada "Prototipos de funciones faltantes"; deshabilitarlo También puede hacer esto a los objetivos específicos en cuestión.

+0

Aunque esto es técnicamente correcto, sugeriría seguir los consejos de @ mattmook ya que señala las diferencias entre() y (vacío). – erator

+0

Sin embargo, este método rechazaría muchas correcciones al código existente que es "Técnicamente" correcto. –

Cuestiones relacionadas