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 rechercher parce que je ne connais pas le nom de la syntaxe. Qu'est-ce que c'est?
c
c99
designated-initializer
Benjamin
la source
la source
Réponses:
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:
...vous pouvez utiliser
...ou:
...ou même:
... bien que les deux derniers ne concernent que le C99.
la source
struct demo_s demo = { .first = 1, .first = 9 };
Sur l'un de mes GCC, celui-ci sera compilé sans avertissement et le premier sera 9.Ce sont les initialiseurs désignés par C99 .
la source
Son connu sous le nom de
designated initialisation
(voir Initialiseurs désignés ). Une "liste d'initialisation", Chaque '.
' est un "designator
" qui dans ce cas nomme un membre particulier de lafuse_oprations
structure ' ' à initialiser pour l'objet désigné par l'hello_oper
identificateur ' '.la source
L'ensemble de la syntaxe est appelé initialiseur désigné comme déjà mentionné par COD3BOY et il est utilisé en général lorsque vous devez initialiser votre structure au moment de la déclaration à certaines valeurs spécifiques ou par défaut.
la source