¿Qué significa punto (.) En un inicializador de estructura?

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

No entiendo esta syntax C bien. Ni siquiera puedo buscar porque no conozco el nombre de la syntax. ¿Que es eso?

Esta es una característica C99 que le permite establecer campos específicos de la estructura por nombre en un inicializador. Antes de esto, el inicializador debía contener solo los valores, para todos los campos, en orden, lo que aún funciona, por supuesto.

Entonces para la siguiente estructura:

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

…puedes usar

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

…o:

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

…o incluso:

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

… aunque los dos últimos son solo para C99.

Estos son los inicializadores designados de C99.

Se conoce como designated initialisation (ver Inicializadores designados ). Una “lista de inicializadores”, cada ‘ . ‘es un’ designator ‘que en este caso nombra un miembro particular de la estructura’ fuse_oprations ‘para inicializar para el objeto designado por el identificador’ hello_oper ‘.