45 votes

"Pas de précédent prototype de la fonction d'avertissement"

j'utilise shareKit à moi-même programme .

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 mettait en garde:"Pas de précédent prototype de la fonction FBCreateNonRetainingArray"

62voto

daveswen Points 663

Selon la norme c, de déclarer le prototype que

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

résout le problème.

49voto

Derek Bredensteiner Points 1124

Afin de clarifier Eric Dchao la réponse ci-dessus, quelqu'un sur facebook, apparemment, n'a pas mis un "statique" en face de cette BOOL?

De toute façon, l'évolution de cette

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

pour ce

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

il fixe pour moi.

28voto

fannheyward Points 5080

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

Dans Xcode 4, aller à votre projet de construction de Paramètres. Recherche pour "prototype". Il devrait y avoir une option appelée "Manquant Prototypes de Fonction"; le désactiver.

par ici

7voto

basicthinker Points 113

Est-il un mondial de la fonction? Ajouter "statique" si elle est utilisée uniquement dans le fichier actuel.

La raison possible est comme ci-dessous:

pas de précédent prototype pour `foo'

Cela signifie que GCC trouvé une fonction globale de définition sans voir le prototype de la fonction. Si une fonction est utilisée dans plus d'un fichier, il doit être un prototype dans un fichier d'en-tête quelque part. Cela permet de maintenir les fonctions et les usages de sortir de la synchronisation

Si la fonction n'est utilisée que dans ce fichier, de le rendre statique garantir que ce ne sera jamais utilisé en dehors de ce fichier de document et que c'est une fonction locale

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