static struct Fuse_oprations hello_oper = {
.getattr = hello_getattr,
.readdir = hello_readdir,
.open = hello_open,
.read = hello_read,
};
Je ne comprends pas bien cette syntaxe C. Je ne peux même pas chercher car je ne connais pas le nom de la syntaxe. Qu'est-ce que c'est?
Il s'agit d'une fonctionnalité C99 qui vous permet de définir des champs spécifiques de la structure par nom dans un initialiseur. Avant cela, l'initialiseur devait contenir uniquement les valeurs, pour tous les champs, dans l'ordre - ce qui fonctionne toujours, bien sûr.
Donc pour la structure suivante:
struct demo_s {
int first;
int second;
int third;
};
...vous pouvez utiliser
struct demo_s demo = { 1, 2, 3 };
...ou:
struct demo_s demo = { .first = 1, .second = 2, .third = 3 };
...ou même:
struct demo_s demo = { .first = 1, .third = 3, .second = 2 };
... bien que les deux derniers soient uniquement pour C99.
Ce sont les C99 initialiseurs désignés .
Son connu comme designated initialisation
(voir Initialiseurs désignés ). Une "liste d'initialiseurs", chacun '.
'est un "designator
" qui dans ce cas nomme un membre particulier du' Fuse_oprations
'struct à initialiser pour l'objet désigné par le' hello_oper
'identifiant.