Structure contenant un pointeur de fonction prenant en paramètre un pointeur sur ladite structure
Bonjour à tous,
Ayant besoin de gérer dans du C ansi des types génériques, j'ai besoin de définir une structure qui contient un pointeur de fonction. Les fonctions susceptibles d'être pointées doivent recevoir en paramètre un pointeur sur la structure dont je viens de parler.
J'ai codé grosso modo ainsi :
Code:
1 2 3 4 5 6 7 8
| typedef void (*tfTypeFonction)(const struct tsTypeStructure_ *);
typedef tsTypeStructure_
{
/* [...] */
tfTypeFonction ptrFonction;
/* [...] */
} tsTypeStructure; |
Je n'ai pas pu lancer pour l'instant mais j'ai un warning résiduel qui dit :
"struct tsTypeStructure_ présent dans la déclaration - Son périmètre est limité à cette définition, ce qui n'est probablement pas ce que vous voulez"...
Pour échapper à ce warning, je peux coder ainsi :
Code:
1 2 3 4 5 6 7 8
| typedef tsTypeStructure_
{
/* [...] */
void (*ptrFonction)(const struct tsTypeStructure_ *);
/* [...] */
} tsTypeStructure;
typedef void (*tfTypeFonction)(const struct tsTypeStructure_ *); |
Ce qui est dommage, c'est que si le prototype de la fonction évolue, je dois changer la déclaration à deux endroits.
Ce que je ne comprends pas, c'est que si on crée deux types de structures se pointant l'une / l'autre, tel que :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| typedef struct
{
/* [...] */
struct struct2_ * ptrstruct2;
/* [...] */
} struct1;
typedef struct struct2_
{
/* [...] */
struct1 * ptrstruct1;
/* [...] */
} struct1; |
on n'a pas de warning.
Bref, y aurait-il un truc que j'aurais raté ?
Merci d'avance.