"Aucun prototype précédent pour la fonction"

J'utilise le programme shareKit pour moi-même.

mais dans le FBConnectGlobal, il y a un avertissement,

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

comme cette méthode, il avertissement: "Aucun prototype précédent pour la fonction FBCreateNonRetainingArray"

Pour clarifier la réponse d'Eric Dchao ci-dessus, quelqu'un à facebook n'a apparemment pas mis un "statique" devant ce BOOL?

Quoi qu'il en soit, changer de cette

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

pour ça

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

Je l'ai réparé pour moi.

Selon c standard, déclarant le prototype comme

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

résout le problème.

MISE À JOUR : Désactiver les avertissements n'est pas une bonne solution, vérifiez la réponse de @Derek Bredensteiner.

Dans Xcode 4, accédez aux parameters de construction de votre projet. Recherche de "prototype". Il devrait y avoir une option appelée "prototypes de fonctions manquantes"; le désactiver.

via ici

Est-ce une fonction globale ? Ajoutez " statique " s'il est utilisé uniquement dans le file en cours.

La raison possible est la suivante:

aucun prototype précédent pour `foo '

Cela signifie que GCC a trouvé une définition de fonction globale sans voir de prototype pour la fonction. Si une fonction est utilisée dans plusieurs files, il devrait y avoir un prototype dans un file d'en-tête quelque part. Cela empêche les fonctions et leurs utilisations de se désynchroniser

Si la fonction est uniquement utilisée dans ce file, assurez-vous qu'elle ne sera jamais utilisée en dehors de ce file et documentez qu'il s'agit d'une fonction locale.