static struct fuse_oprations hello_oper = {
.getattr = hello_getattr,
.readdir = hello_readdir,
.open = hello_open,
.read = hello_read,
};
Não entendo bem essa sintaxe C. Não consigo nem pesquisar porque não sei o nome da sintaxe. O que é isso?
c
c99
designated-initializer
Benjamin
fonte
fonte
Respostas:
Este é um recurso do C99 que permite definir campos específicos da estrutura por nome em um inicializador. Antes disso, o inicializador precisava conter apenas os valores, para todos os campos, em ordem - o que ainda funciona, é claro.
Portanto, para a seguinte estrutura:
...você pode usar
...ou:
... ou mesmo:
... embora os dois últimos sejam apenas para C99.
fonte
struct demo_s demo = { .first = 1, .first = 9 };
Em um dos meus GCC, isso será compilado sem aviso e primeiro será 9.Estes são os inicializadores designados do C99 .
fonte
É conhecido como
designated initialisation
(consulte Inicializadores designados ). Uma "lista de inicializadores", Cada '.
' é um "designator
" que, neste caso, nomeia um membro específico dafuse_oprations
estrutura ' ' para inicializar para o objeto designado pelohello_oper
identificador ' '.fonte
A sintaxe inteira é conhecida como inicializador designado conforme já mencionado pelo COD3BOY e é usado em geral quando você precisa inicializar sua estrutura no momento da declaração para alguns valores específicos ou padrão.
fonte