Вход
Наше всё
Теги
codebook
无线电组件
Поиск
Опросы
Закон
Среда
23 апреля
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
PLD, FPGA, DSP
AVR
PIC
ARM, RISC-V
Технологии
Кибернетика, автоматика, протоколы
Схемы, платы, компоненты
Средства и методы разработки
610101
Топик полностью
=AlexD=
(19.07.2015 21:27 - 21:31, просмотров: 71)
ответил
AlexG
на
Хочется странного - сделать в программе структуру к элементам которой можно обратиться не только по названию, но и по порядковому номеру, как к элементам массива. Может все уже придумано и для обозначения такой конструкции есть специальный термин?
Отсортировать поля структуры по размеру. Завести два массива в юнионе, конкретный массив определять по индексу.
union param_t { struct { uint16_t arr_w [2]; uint8_t arr_b [3]; }; struct { uint16_t w1; // 0 int16_t w2; // 1 uint8_t b1; // 2 int8_t b2; // 3 char b3; // 4 }; } param_t; param_t param; #define ARR_PARAM(n) ((n)<2?param.arr_w[n]:param.arr_b[n-2]) void main (void) { int16_t ww = ARR_PARAM(1); int8_t bb = ARR_PARAM(3); int16_t www = param.w2; int8_t bbb = param.b2; }
Заодно видны кое-какие грабли, надеюсь очевидные для всех.
Это моё личное предвзятое мнение. Любое совпадение с реальностью является случайным и непреднамеренным.
Ответить