Pardon, je voulais dire définir struct machine dans le .h
En ne faisant que la définition de typedef struct machine machine dans le .h, tu ne peux que manipuler les pointeur du type machine* (donc tu pourrais en modifiant tes fonctions pour qu'elles utilisent des pointeur vers machine, et ajouté une fonction de création et de suppression).
Mais si tu veux faire
machine ma;
et utiliser des fonctions qui prennent en argument machine, tu es obligé d'avoir la définition de struct machine dans le .h
je viens de creer ce post openclassroom, peut etre que ca vous parraitra plus clair : https://openclassrooms.com/forum/sujet/field-has-incomplete-type-ou-dereferencing-pointer
Tu es là aussi obligé d'avoir la définition de struct machine si tu veux accéder à ses membres directement.
Sinon tu peux déclarer en plus des accesseurs (dans machine.h) et défini dans machine.c du genre
machine_getx(machine *m) { return m->x; }
etc
Message édité le 13 avril 2021 à 12:41:45 par Guybrush81