J'ai un problème avec typedef, voici grosso modo la structure de mon petit projet

main.c

#include "main.h"

... du code ....
main.h

#ifndef _main
#define _main
typedef struct
{
Int32 ma_variable;

} ma_structure;
#endif
test.c

#include "main.h"
#include "test.h"

void essai(ma_structure *ptr)
{
ptr->ma_variable = 0;
}
test.h

#ifndef _test
#define _test

void essai(ma_structure *ptr);

#endif
Quand je compile j'ai une erreur dans test.h sur ma_structure qui n'est pas reconnu, si je déplace le prototype dans test.c, ça marche.
Si je recopie la definition de ma_structure dans test.h ça marche aussi.

Y a pas une solution pour avoir une seule déclaration de ma_structure et surtout laisser le prototype essai dans test.h car j'en aurais besoin dans d'autres sources ?

Merci d'avance