FDA (02.07.2007 08:53, просмотров: 1) ответил Petr_ на Про указатели - согласен. Но если union - то передача структур. Хотя можно привести и другие примеры, где union смотрится не так уж плохо.
Использование юнионов оправдано в тех случаях, когда они позволяют обойтись без указателей! Зачем мне указатель, если я могу сделать тоже самое при помощи структуры и юниона? Зачем мне лишние звёздочки и т.п.???
Кроме того, не стоит забывать, что в языке Си массивы и указатели суть одно и тоже!!!
Это я говорю конкретно Gamma_Spb! Так что в данном случае обращение к массиву raw и использование указателя на структуру с приведением к типу char будет работать абсолютно одинаково! Только в случае указателей Вы получите кучу звёздочек и трудночитаемый код, а в случае применения юниона избавитесь от этого геморроя!
Кроме того, почему-то никто не задумался, а кто формирует пакеты данных для микроконтроллера! Я, например, пишу программы на Delphi и мне очень удобно просто переписать эти структуры в виде:
TPultParams = packed record
case Byte of
1 : (s : packed record
InputTO : Word;
LcdTO : Word;
MsgBoxTO : Word;
ProgMetkaEnabled : ByteBool;
Reserved : Byte;
end;
);
2 : (raw : array [0..7] of Byte);
end;
Получается всё едино!