J'ai un souci, je ne sais pas trop d'où ça vient. Mais au moins le test case est super simple :
/* Déclaration anticipée */
struct truc_t;
/* Première structure utilisant un pointeur vers la seconde */
typedef struct machin_s
{
void (*func) (truc_t* t);
} machin_t;
/* Définition de la structure déclarée auparavant */
typedef struct truc_s
{
int i;
} truc_t;
int main (void)
{
}
A la compilation, j'ai ce message :
main.c:12: error: expected ')' before '*' token main.c:13: warning: no semicolon at end of struct or union main.c:13: warning: struct has no members
Alors si je ne fais pas de déclaration anticipée, et déclare truc avant machin, ça marche.
Mais vous vous doutez bien que si présente les choses sous cette forme, c'est que les déclarations sont sous cetet forme dans les headers, et se présentent dans cet ordre-là.
Ce que je ne comprends pas, c'est d'où vient l'erreur. En effet, la déclaration partielle de struct truc devrait permettre au compilo de décrire correctement la structure machin, qui contient un pointeur de fonction, non ?
Pourquoi "ça veut pas" ?
