Спасибо большое за наводку. Так все работает (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено jhoo 09 сентября 2004 г. 17:35
В ответ на: Что мешает структуру сделать первом полем объединения? отправлено Mik 09 сентября 2004 г. 16:49

Выше я приводил упрощенный пример кода. Реально же структура MY_STRUCT_2 выглядет немного большей:


typedef struct tagMY_STRUCT_2
{
int w;
char c;
MY_UNION mu;
long l; // новый элемент
} MY_STRUCT_2;

При такой структуре выдается ошибка инициализации. Вот что я заметил, если юнион MY_UNION в структуре поставить в конец, то ошибка исчезала и инициализация проходила правильно. Т.е. окончательный вид должен быть таким:

typedef struct tagMY_STRUCT_1
{
int i1;
int i2;
char c;
} MY_STRUCT_1;

typedef union tagMY_UNION
{
MY_STRUCT_1 ms;
int i;
} MY_UNION;

typedef struct tagMY_STRUCT_2
{
int w;
char c;
long l;
MY_UNION mu;
} MY_STRUCT_2;
// пример 1
MY_STRUCT_2 A = { 0x1234, 55, 1000, 10,20,30};
// пример 2 для int i;
MY_STRUCT_2 X = { 0x1234, 55, 1000, 2000};



Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru