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) :
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 coding.h:10:1: warning: parameter names (without types) in function declaration arbre_t construirecodage(freq_t);
Code du header coding.h en exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Toute piste de reflexion et/ou solution sera la bienvenue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 */
Partager