43 votes

Comment gérer l'avertissement Xcode "pas de prototype précédent pour la fonction ..."?

Cet avertissement fait son apparition dans certaines bibliothèques tierces.

Existe-t-il un moyen de le gérer sans modifier le code (par exemple, ignorer l'avertissement)?

Si je dois modifier le code pour le corriger, comment puis-je le faire?

Voici l'un des blocs de code à l'origine d'un avertissement:

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

81voto

mattmook Points 1695

Habituellement, avec de tels avertissements, vous pouvez simplement définir un prototype de fonction en haut de votre fichier, par exemple:

 BOOL FBIsDeviceIPad();
 

Mais en C, une méthode sans rien entre les accolades, c'est-à-dire () implique en réalité un nombre arbitraire de paramètres. Au lieu de cela, la définition devrait devenir (void) pour ne désigner aucun paramètre:

 BOOL FBIsDeviceIPad(void);

...

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

29voto

bosmacs Points 4410

Dans Xcode4, accédez aux paramètres de construction de votre projet. Recherchez "prototype". Il devrait y avoir une option appelée "Prototypes de fonctions manquantes"; le désactiver. Vous pouvez également le faire pour la ou les cibles spécifiques en question.

1voto

thomsky Points 31

Il n'y a pas d'avertissement si une telle fonction est définie comme inline.

Cela peut suffire tant que votre fonction est optimisée pour une utilisation en ligne. http://msdn.microsoft.com/en-us/library/1w2887zk.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X