Bonjour à tous,
J'ai un petit problème avec Eclipse CDT et l'analyse de syntaxe que CDT réalise pour un programme en C.
Il est commun d'utiliser un pointeur opaque lorsqu'on veut cacher la structure utilisée dans une API.
Je vous donne un exemple:
fichier list.h:
fichier list.c:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 typedef struct _list list; /* pointeur opaque, la structure est définie dans le .c */ /* ces fonction sont soulignées "syntax error" car CDT ne connait pas encore "struct _list" et par extension, le type "list" */ list *create_list( void ); int next_data( list *pList );
Mon problème est que CDT n'interprète pas correctement le typedef car la structure à laquelle il fait référence n'est pas encore définie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include "list.h" struct _list { int id; [...] };
Toutes les fonctions qui sont déclarées dans le header et qui utilisent ce typedef sont soulignées en jaune "syntax error" (l'analyseur syntaxique de CDT pense que la structure n'existe pas) alors qu'à la compilation tout se passe bien, évidemment (et le programme fonctionne sans problème).
Une solution?
Partager