Problème de typedef et headers multiples
Bonjour,
Dans le cadre d'un cours de licence, nous travaillons sur un projet de compression de Huffman en C.
La compilation demandée est en ANSI avec option pedantic (et evidemment le Wall et Werror qui vont avec).
L'arborescence du projet nous est imposée et se compose de divers codes source et headers correspondants.
Dans plusieurs de ces headers il y a des typedefs de structures auto-référentes et autres.
J'ai bien vérifié que chaque header utilisant une variable ou un type défini dans un autre header importe celui-ci, idem pour le code source. Cependant, à la compilation, j'obtiens toujours les warnings suivants (je n'en mets qu'un pour illustrer mais j'en obtiens plusieurs concernant différents headers) :
Code:
1 2 3
|
coding.h:10:1: warning: parameter names (without types) in function declaration
arbre_t construirecodage(freq_t); |
Je suppose que le souci provient du fait que le lien entre les header où est réalisé le typedef et celui où le type est utilisé ne se fait pas correctement, ce qui fait qu'ici par exemple arbre_t est analysé comme un nom de variable et non comme un type. Sauf que j'ignore comment solutionner ça. Ou peut-être que le problème vient d'ailleurs mais je sèche.
Code du header coding.h en exemple
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
#ifndef CODING_H
#define CODING_H
#include "freq.h" /* freq_t */
#include "arbre.h" /* arbre_t */
typedef unsigned int code_t[257];
arbre_t construirecodage(freq_t);
void encode_rec(arbre_t, code_t, int);
#endif /* CODING_H */ |
Code du header contenant le typedef d'arbre_t en exemple
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
#ifndef ARBRE_H
#define ARBRE_H
#define HAUTEUR_MAX 31
typedef struct noeud_m* arbre_t;
struct noeud_m {
float freq;
int lettre;
unsigned int code;
arbre_t left;
arbre_t right;
};
(...)
#endif /* ARBRE_H */ |
Toute piste de reflexion et/ou solution sera la bienvenue.