struct audio_policy_service_ops {
audio_io_handle_t (*open_duplicate_output)(void *service,audio_io_handle_t output1,
int (*close_output)(void *service, audio_io_handle_t output);audio_io_handle_t output2);
int (*suspend_output)(void *service, audio_io_handle_t output);
int (*restore_output)(void *service, audio_io_handle_t output);
};
Теперь они инициализируются, как показано ниже:
struct audio_policy_service_ops aps_ops = {
open_duplicate_output : aps_open_dup_output,
close_output : aps_close_output,
suspend_output : aps_suspend_output,
restore_output : aps_restore_output,
};
2 ответа
Это нестандартный синтаксис инициализации GCC для структур. Его в просторечии называют «синтаксисом GNU struct init старого стиля». Его стандартный эквивалент выглядит примерно так:
struct Foo bar = { .name1 = value1, .name2 = value2 };
Подробнее об этом можно прочитать в документации GCC.
Это GCC-изм. При инициализации структуры можно указать перед значениями инициализации имя поля структуры. Это позволяет инициализаторам следовать в случайном порядке и делает более понятным, в какое поле попадают заданные значения.
Похожие вопросы
Новые вопросы
c
C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.
.memberName = value
.