je l'extrait de code exemple suivant de code d'un main.c qui appelle 3 fonctions, avec 3 têtes - qui me donne des avertissements pour une raison inconnue:avertissement: déclaration implicite de la fonction - ordre de l'inclusion des matières?
#include "header1.h"
#include "header2.h"
#include "header3.h"
int main()
{
function1(); // this is from header1
function2(); // this is from header2
function3(); // this is from header 3
}
Fondamentalement, après l'utilisation de gcc, les fonctions 2 & 3 produiront l'avertissement. Cependant, après réorganisant le code à quelque chose comme ceci:
#include "header3.h"
#include "header1.h"
#include "header2.h"
int main()
{
function1(); // this is from header1
function2(); // this is from header2
function3(); // this is from header 3
}
Il sera alors me donner l'avertissement que les fonctions 1 & 2 sont implicites. Qu'est-ce que je fais mal ici?
S'il vous plaît fournir un [mcve]. Nous devons voir le contenu exact des fichiers d'en-tête. Vous avez probablement une erreur dans un/tous (utiliser le même garde est ma conjecture). – kaylum
De telles erreurs se produisent si un en-tête n'inclut pas correctement les en-têtes dépendants ou utilise des macros obscures/une compilation conditionnelle. Voir [demander], fournir un [mcve]. – Olaf
@kaylum ici est l'un des fichiers d'en-tête, le suivi de repos complet '#ifndef __REZON_FUNCTIONS__ #define __REZON_FUNCTIONS__ function1 void(); #endif ' – rezon