pinguin007 a écrit :
automate.h
Code :
- #include "list.h"
- typedef struct _state {
- char Node ;
- int StateID;
- int *Terminal ;
- char *Subword ;
- LIST Next; /*definie dans list.h*/
- } State;
- typedef State *AutomatonState ;
|
|
Manque les protections contre les inclusions multiples.
#ifndef H_AUTOMATE
#define H_AUTOMATE
...
#endif
|
Citation :
et list.h
Code :
- #include "automate.h"
- typedef struct _cell{
- AutomatonState c_state ;
- struct _cell *NextCell;
- } cellule;
- typedef cellule LIST
|
|
Même punition...
#ifndef H_LIST
#define H_LIST
...
#endif
|
Citation :
Dans ce cas l'inlusion croisée pose probléme, comment faire pour que ca marche
|
inclusion croisée sans protection... Ca sent le paté...
http://mapage.noos.fr/emdel/codage [...] ser_source
[edit]
Ok, tu as ajouté les protections, mais elles ne doivent pas avoir de _ en tête.
http://mapage.noos.fr/emdel/codage.htm#nom_underscore
[/edit]
Après analyse de ton code, il y a un problème de conception qui n'est pas solvable, tout simplement parce que la conception n'a pas été assez refléchie. Il faut en effet séparer les données de la cellule de l'automate de la structure de liste chainée. L'automate n'a pas à savoir que ces cellules sont en liste. Par contre, la liste peut savoir qu'elle fait une liste de cellules d'automates. Il y a donc une hiérarchie à respecter (oui, je sais, ça fait mal!)
Nous avons d'abord des cellules d'automates indépendantes. Elle pourraient former un tableau, une liste, un arbre, peu importe... Aucune référence n'est faite à l'organisation en mémoire.
#ifndef H_AUTOMATE
#define H_AUTOMATE
/* automate.h */
typedef struct state AutomatonState;
typedef struct state
{
char Node;
int StateID;
int *Terminal;
char *Subword;
}
State;
#endif
|
Et puis nous avons une organisation en chaine d'objets 'automate'...
#ifndef H_LIST
#define H_LIST
/* list.h */
#include "automate.h"
typedef struct cellule LIST;
struct cellule
{
AutomatonState c_state;
LIST *NextCell;
};
#endif
|
Je le rappelle au cas où ça ne serait pas évident : il ne peut pas y avoir de bon codage sans une bonne conception préalable.
Message édité par Emmanuel Delahaye le 16-05-2005 à 17:29:10
---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/