Salut à tous!
J’ai un petit problème concernant la déclaration d’une structure.
Je joint ci-dessous une archive contenant un programme (qui ne sert à rien du tout!) qui illustre parfaitement et de manière très simplifiée mon problème:
http://bluelambda.free.fr/test.tar.gz
Il y a donc 4 fichiers:
- test.h, qui contient une déclaration de fonction de test.c, et une déclaration du type d’une structure
- test.c, qui contient la fonction déclarée dans le .h, et la déclaration de la structure
- main.c, qui exploite le fichier test.h, ici je tente d’utiliser une structure du type déclaré dans test.h
- Makefile, qui permet de compiler le tout
Il est préférable que vous regardiez les fichiers, qui font chacun une dizaine de lignes, et qui vous aideront à bien voir de quoi il s’agit.
Lorsque je compile, j’obtiens les erreurs suivantes:
gcc -g -Wall -W -c main.c
main.c: Dans la fonction «main» :
main.c:8: erreur: invalid application of «sizeof» to incomplete type «struct ma_structure»
main.c:10: erreur: déréférencement d'un pointeur de type incomplet
main.c:11: erreur: déréférencement d'un pointeur de type incomplet
make: *** [main.o] Erreur 1
D’après ce que je comprends, la déclaration de la structure présente dans test.c n’est pas accessible dans les fonctions de main.c. Il ne connaît pas les champs contenus dans la structure, donc me sort une erreur.
Je pense que le problème vient du Makefile, je débute dans la création de ces fichiers, je n’ai peut être donc pas bien compris quelque chose, et il doit y avoir des problèmes de dépendances.
Quelqu’un ici aurait-il l’aimabilité de m’éclairer? Je bloque un peu là B)
PS: je ne veux pas avoir à déclarer ma structure dans le .h. On devrait pouvoir s’en sortir en déclarant seulement le type dans le .h non?