2013-05-29 3 views
0

J'ai une question concernant la déclaration de fonction:comment nettoyer la déclaration implicite de la fonction dans C?

Je déclare une fonction bc

//b.c 
void getNumber(); 

//common header 
common.h 

En ca je l'utilise comme ceci: // ac

#include "common.h" 
void getInfo() 
{ 
    getNumber(); 
} 

mais se plaindre le getNumber est la déclaration implicite de la fonction, quelle est la raison?

+5

Vous devez placer la déclaration dans 'common.h', pas dans' b.c'. – glglgl

+1

'void foo()' n'est pas un prototype, vous devriez utiliser 'void foo (void)' à la place. – effeffe

Répondre

3

ajouter la ligne suivante à common.h

void getNumber(); 

le fichier b.c doit contenir la définition de la fonction de cette manière

void getNumber() { 
    .... 
} 
0

Vous devez déclarer ou définir d'abord votre fonction avant de l'utiliser.

Si votre déclaration void getNumber(); a été lue par le compilateur après sa première utilisation (void getInfo()), vous obtiendrez l'avertissement warning: implicit declaration of function ‘getNumber’. Cela est arrivé parce que le compilateur, lors de la première rencontre getNumber dans void getInfo() a dû deviner son type de retour - d'où l'avertissement. Je pense que c'est ce que vous faites même si votre exemple de code ne le montre pas de cette façon.

Si votre void getNumber(); a été lu par le compilateur d'abord, aucun avertissement ne se produirait. Mettre votre déclaration de fonction dans un fichier d'en-tête est une bonne idée. Assurez-vous d'abord à include "common.h" avant votre getInfo().

Questions connexes