Bonsoir,
Je cherche à modéliser une sorte d'arborescence de fichier. Pour cela j'ai donc mis au point une structure d'arbre qui me permet de parcourir l'arborescence. Elle ressemble à ceci :
J'essaye de me rapprocher du fonctionnement de opendir, readdir... (Cette structure n'est là qu'à titre d'exemple, les noms des types ne sont pas forcément ceux là, c'est pour illustrer le problème).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 typedef struct Dir { int seek; struct dirent* informations; struct Dir* parent; struct Dir* subdir; struct Dir* next_file; } DIR;
Mon but est le suivant : optimiser la place prise en mémoire (histoire d'utiliser les unions au moins une fois).
Sachant qu'un fichier ne peut contenir de répertoire, les informations subdir et parent ne sont pas utiles. Même chose pour les répertoires, l'information seek est inutile. D'où l'idée de créer une union.
Je souhaiterais obtenir quelque chose dans ce style :
Malheureusement ici on remarque qu'il y a un problème, les définitions de certains sont effectuées après leur première déclarations au sein d'une autre structure...
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
19
20
21
22
23
24
25 typedef struct directory { struct Dir* parent; struct Dir* sub_dir; } DIRECTORY; /* ici nom à changer conflit avec FILE... */ typedef struct file { int seek; } FILE; typedef union FileDirectory { DIRECTORY directory; int seek; } FILEDIRECTORY; typedef struct Dir { struct dirent* informations; struct Dir* next_file; FILEDIRECTORY file_directory; } DIR;
Je voulais savoir si je pouvais résoudre ce problème de façon propre ou si je devais abandonner l'idée de gain de place ?
Dans la structure DIR il manque un champ pour savoir dans quel champ de l'union j'écris. Sinon c'est dommage car avec l'union les choses étaient bien séparées.
Voilà j'espère que j'ai été assez clair ^^.
Merci à vous.
Bye.
Partager