static struct fuse_oprations hello_oper = {
.getattr = hello_getattr,
.readdir = hello_readdir,
.open = hello_open,
.read = hello_read,
};
Я плохо понимаю этот синтаксис C. Я даже не могу искать, потому что не знаю названия синтаксиса. Что это такое?
c
c99
designated-initializer
Вениамин
источник
источник
Ответы:
Это функция C99, которая позволяет вам устанавливать определенные поля структуры по имени в инициализаторе. До этого инициализатор должен был содержать только значения для всех полей по порядку - что, конечно же, работает.
Итак, для следующей структуры:
...ты можешь использовать
...или:
...или даже:
... хотя последние два предназначены только для C99.
источник
struct demo_s demo = { .first = 1, .first = 9 };
На одном из моих GCC это будет компилироваться без предупреждения, и сначала будет 9.Это назначенные инициализаторы C99 .
источник
Он известен как
designated initialisation
(см. Назначенные инициализаторы ). «Список-инициализаторов», Каждый '.
' - это "designator
", который в этом случае называет конкретный член структуры 'fuse_oprations
' для инициализации для объекта, обозначенногоhello_oper
идентификатором ' '.источник
Весь синтаксис известен как назначенный инициализатор, как уже упоминалось COD3BOY, и обычно используется, когда вам нужно инициализировать вашу структуру во время объявления некоторыми конкретными значениями или значениями по умолчанию.
источник