Bonjour,

J'ai un problème d'inclusion de fichiers d'entête. J'ai refais un code en version simplifiée pour que vous compreniez le problème (le vrai code contient des structures hyper longues):

data_a.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
#ifndef DATA_A_H
#define DATA_A_H
 
#include "data_b.h"
 
typedef struct data_a {
	int i;
	data_b_t db;
} data_a_t;
 
#endif
data_b.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
#ifndef DATA_B_H
#define DATA_B_H
 
#include "data_a.h"
 
typedef struct data_b {
	char c;
	data_a_t da;
} data_b_t;
 
#endif
expected_specifier_qualifier_list_before.c:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
#include "data_a.h"
#include "data_b.h"
 
int main() {	
	return 0;
}
et l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
In file included from data_a.h:4,
                 from expected_specifier_qualifier_list_before.c:1:
data_b.h:8: error: expected specifier-qualifier-list before ‘data_a_t’
Je pense que c'est un problème classique mais je ne trouve pas la (bonne) solution.
Une solution serait de fusionner les deux structures data_a data_b dans un seul fichier.
Le problème avec cette solution c'est qu'il faudrait changer pas mal de choses dans d'autres fichiers cources...

Merci d'avance pour votre aide.