ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
3 июля
462509 Топик полностью
Ксения (12.11.2013 01:16 - 01:39, просмотров: 71) ответил UraGun на ну эт понятно :) В общем union законно решает мой вопрос. Надеюсь так вот можно ? Анонимно.
Так хуже, поскольку само объявление union, как и объявление struct, никакого объекта не порождают, а только описывают его структуру. Поэтому вам придется либо дать имя этому юниону, чтобы им штамповать такие объекты, или сразу после union что-нибудь объявить материальное. Например, так: union { struct {uint8_t a1,a2,a3,a4;} type1[255]; struct {uint16_t b1,b2;} type2[255]; struct {uint32_t c1;} type3[255]; } Data; Но тогда у вас обращения будут вот такие гадкие: Data.type2[i].b2 Нужно пуд кукурузы съесть, чтобы догадаться, что бы это значило. :) Тогда как смысл рекомендованной вам записи: Data[i].byte[2] предельно очевиден без словаря, ибо подобен почтовому адресу "дом 1, кв. 2" Помимо прочего, рекомендованный вам вариант позволяет порождать массивы разной длины: union { unsigned long value; unsigned int word[2]; unsigned char byte[4]; } node[255], xxx[32], zzz[64], timecounter; При необходимости аллогировать их динамически, а так же присваивания тут получаются короткими: node[i] = timecounter;