Le code ci-dessous permet d'implémenter vtable.Présentation de la syntaxe C pour les pointeurs de fonction
Dans le code ci-dessous,
struct A;
typedef struct {
void (*A)(struct A*);
void (*update)(struct A*);
int (*access)(struct A*);
} A_functable;
typedef struct A{
int a;
A_functable *vmt;
} A;
Je ne comprenais pas mentionner (*A)
comme pointeur de fonction dans void (*A)(struct A*);
qui est membre A_functable
, où A
est
typedef struct A{
int a;
A_functable *vmt;
} A;
Comment pour comprendre cette syntaxe?
De la même manière que vous lisez les deux autres pointeurs de fonction, juste qu'il s'appelle 'A'. – user2357112
'A' dans' A_functable' est complètement séparé du nom de type 'A' que vous introduisez plus tard. Pour éviter toute confusion, l'auteur aurait dû utiliser un nom différent: –
probablement une question de test/devoirs ... – Rafael