Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Инициализация полей структуры
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
skyv
Всем привет.
Имеем структуру.
typedef struct {
union {
unsigned int word;
struct {
unsigned pole1:8;
unsigned pole2:8;
};
};
} t_mystr;

Подскажите как правильно ее инициализировать.
Делал так, но получаю ошибку.

t_mystr mystr = {
.pole1 = 22,
.pole2 = 55
};

SSerge
Стандарт С позволяет только анонимные объединения, а у Вас ещё и анонимные sтруктуры есть.
Не всякий компилятор такое разрешает (поскольку не обязан).
В IAR сработает, если разрешить ему расширения языка (*)Standard with IAR extensions.

Исправлено:
Пардон, я всё перепутал.
Стандарт С++ допускает анонимные структуры, а в С их нет.
Зато в С можно использовать инициализацию в стиле .pole1 = 22,
а вот С++ такого не предусматривает.

И то и другое одновременно может быть только как расширение.
Сергей Борщ
Неплохо бы еще и текст ошибки приводить. И язык указывать. С++ вообще не позволяет инициализировать в стиле .member_name = value.
_Pasha
Цитата(skyv @ Feb 13 2014, 16:53) *
Делал так, но получаю ошибку.

t_mystr mystr = {
.pole1 = 22,
.pole2 = 55
};

t_mystr mystr = {{
.pole1 = 22,
.pole2 = 55
}};

Ы?
Гцц в режиме gnu99 хавает и так и эдак.
Но я бы на Вашем месте unnamed fields не сильно того... любил sm.gif
SlavaV
я на Visual C++ инициализирую просто

str - какаято структура

то при инициализации str = {параметр1, параметр2, {вложенная структура} и т.д.}
pokk
Вот пару дней назад встретил такое в коде. IAR на такое не ругается.

Код
wiz_NetInfo gWIZNETINFO = { .mac = {0x00, 0x08, 0xdc,0x00, 0xab, 0xcd},
                            .ip = {192, 168, 1, 123},
                            .sn = {255,255,255,0},
                            .gw = {192, 168, 1, 1},
                            .dns = {0,0,0,0},
                            .dhcp = NETINFO_STATIC };



Код
typedef struct wiz_NetInfo_t
{
   uint8_t mac[6];  ///< Source Mac Address
   uint8_t ip[4];   ///< Source IP Address
   uint8_t sn[4];   ///< Subnet Mask
   uint8_t gw[4];   ///< Gateway IP Address
   uint8_t dns[4];  ///< DNS server IP Address
   dhcp_mode dhcp;  ///< 1 - Static, 2 - DHCP
}wiz_NetInfo;


Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.