Erreur de compilation : header hell

tatatatataa Messages postés 4 Statut Membre -  
fiddy Messages postés 11653 Statut Contributeur -
Bonjour,

Pour un projet de C, j'ai plusieurs fichiers que je compile, et j'ai l'erreur suivante :

loadPPM.c:7:error : redefinition of 'loader'
loadPPM.c:7:error : rprevious definition of 'loader' was here

Mon loadPPM.h ressemble à ça :

#ifndef LOADPPM_H
#define LOADPPM_H

#include "loadPPM.c"

/////////////// LoadPPM ///////////////

void loader(char*, Calque*);

#endif


et le loadPPM.c :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "loadPPM.h"
// d'autres .h

void loader(char* nom, Calque* Clq) {

// toute la fonction

}

Et je comprends vraiment pas le probleme ?!

Est-ce quelqu'un aurait la solution ?

3 réponses

fiddy Messages postés 11653 Statut Contributeur 1 847
 
Salut,
Enlève l'include loadPPM.c du fichier .h, ça devrait aller mieux. Et d'une manière générale, jamais de .c dans un .h.
Cdlt
0
Char Snipeur Messages postés 10112 Statut Contributeur 1 299
 
Une fonction doit être déclaré dans chaque unité (fichier compilé) où elle est utilisé mais ne doit être définie qu'une seule fois pour l'ensemble du programme.
Donc en règle générale, jamais de définition de fonction dans un .h
0
tatatatataa Messages postés 4 Statut Membre
 
Merci pour votre aide. Mais est ce que ça voudrait dire qu'il n'y a pas de prototype de fonction dans un .h ??
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Si dans le .h, il y a le prototype de la fonction. Dans le .c, tu fais appels aux .h pour connaître le prototype de la fonction, et tu définis la fonction (tu écris son corps).
0