Что означает точка (.) В инициализаторе структуры?

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

Я не очень хорошо понимаю этот синтаксис C. Я даже не могу выполнить поиск, потому что не знаю имени синтаксиса. Что это?

Это функция C99, которая позволяет вам устанавливать определенные поля структуры по имени в инициализаторе. До этого инициализатор должен был содержать только значения для всех полей в порядке, который все еще работает, конечно.

Итак, для следующей структуры:

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

…вы можете использовать

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

…или:

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

…или даже:

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

… хотя последние два предназначены только для C99.

Это назначенные инициализаторы C99.

Его называют designated initialisation (см. Раздел Назначенные инициализаторы ). «Инициализатор-список», «Каждый» . ‘- это « designator », который в этом случае называет определенный член структуры « fuse_oprations » для инициализации объекта, указанного идентификатором « hello_oper ».

Interesting Posts
Давайте будем гением компьютера.