Cosa significa punto (.) In un inizializzatore di struct?

static struct fuse_oprations hello_oper = { .getattr = hello_getattr, .readdir = hello_readdir, .open = hello_open, .read = hello_read, }; 

Non capisco bene questa syntax di C. Non riesco nemmeno a cercare perché non conosco il nome della syntax. Cos’è quello?

Questa è una funzionalità C99 che consente di impostare specifici campi della struttura in base al nome in un inizializzatore. Prima di questo, l’inizializzatore doveva contenere solo i valori, per tutti i campi, nell’ordine – che funziona ancora, naturalmente.

Quindi per la seguente struttura:

 struct demo_s { int first; int second; int third; }; 

…Puoi usare

 struct demo_s demo = { 1, 2, 3 }; 

…o:

 struct demo_s demo = { .first = 1, .second = 2, .third = 3 }; 

…o anche:

 struct demo_s demo = { .first = 1, .third = 3, .second = 2 }; 

… anche se gli ultimi due sono solo per C99.

Questi sono gli inizializzatori designati da C99.

È noto come designated initialisation (vedi Inizializzatori designati ). Una “lista di inizializzazione”, Ogni ‘ . ‘è un’ designator ‘che in questo caso nomina un particolare membro della struttura’ fuse_oprations ‘da inizializzare per l’object designato hello_operhello_oper ‘.