LINUX.ORG.RU

Что означает точка перед элементом структуры в C++?

 , ,


1

3

Здравствуйте! Я прочитал про структуры, но поиск «c++ structures dot before member name» ничего не показал.

Подскажите, что определяет элемент структуры .common?

Также, зачем нужно равно HAL_MODULE_INFO_SYM =

И почему все элементы начинаются с точки: .tag, .id, .name?

struct audio_module HAL_MODULE_INFO_SYM = {
    .common = {
        .tag = HARDWARE_MODULE_TAG,
        .module_api_version = AUDIO_MODULE_API_VERSION_0_1,
        .hal_api_version = HARDWARE_HAL_API_VERSION,
        .id = AUDIO_HARDWARE_MODULE_ID,
        .name = "NVIDIA Tegra Audio HAL",
        .author = "The Android Open Source Project",
        .methods = &hal_module_methods,
    },
};

https://source.android.com/devices/architecture/hal

Это создается экземпляр структуры и происходит именованная инициализация полей.

panter_dsd ★★★★
()
Ответ на: комментарий от anonymous

Точнее C99 или GNU++ (в C++20 будет официально).

xaizek ★★★★★
()

поле .common - структура; инициализация этого поля осуществляется внутри инициализации объекта HAL_MODULE_INFO_SYM

синтаксис = { ... } служит для инициализации объединений и структур

то, что с точкой, называется designator: указатель на имя члена для его инициализации

и да, это C (99), но в C++ так тоже можно

Важно к прочтению http://en.cppreference.com/w/c/language/struct_initialization

Rot1
()
Последнее исправление: Rot1 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.