typedef struct query_reading
{
BYTE start; //стартовый символ
BYTE addr; //сетевой адрес
BYTE l; //длина команды
BYTE cmd; //массив команд
BYTE cs[2]; //контрольная сумма
BYTE stop; //стоп-символ
}query_reading;
Массив в структуре
Есть структура....
Код:
Можно ли изменить размер массива cs в структуре? Скажем
Код:
int n = 3;
а вструктуре напишем
Код:
BYTE cs[n];
в этом случае естественно вылетает ошибка...нужна альтернатива...
Использовать вектор или изначально выставлять размер массива в максимальлно допустимое значение (не самый лучший вариант).
Цитата: nikitozz
Использовать вектор или изначально выставлять размер массива в максимальлно допустимое значение (не самый лучший вариант).
Для автора будет самый лучший.
Насколько я понял, он это будет передавать в виде указателя, а если в структуре будет еще один указатель, то данные передадутся не те что надо.
Цитата: oxotnik333
Для автора будет самый лучший.
Насколько я понял, он это будет передавать в виде указателя, а если в структуре будет еще один указатель, то данные передадутся не те что надо.
Насколько я понял, он это будет передавать в виде указателя, а если в структуре будет еще один указатель, то данные передадутся не те что надо.
Ну вообщем да. Судя по структуре я тоже так подумал. Просто жуть как не люблю нечто вроде
Код:
char buf[2048];
А второй вариант не катит...
Смысл какой...этот массив является контрольной суммой, а в условии сказано:Если код start встречается в поле контрольной суммы, то перед контрольной суммой вставляется нулевой незначащий байт.
Соответственно получается, что если условие соблюдается (т.е. cs == start), то всё ок...а если нет, то незначащий байт идет после контрольной суммы...как его убрать вообще?
Цитата: romikiz
Смысл какой...этот массив является контрольной суммой, а в условии сказано:Если код start встречается в поле контрольной суммы, то перед контрольной суммой вставляется нулевой незначащий байт.
Соответственно получается, что если условие соблюдается (т.е. addr == start), то всё ок...а если нет, то незначащий байт идет после контрольной суммы...как его убрать вообще?
Не совсем понял, а какие трудности вызывает этот незначащий байт?
Если значащий байт есть, то увеличивается длина сообщения, соответственно и придется пересчитать контрольную сумму...во втором случае(когда start!=cs) это не приемлемо
Ещё можно использовать 2 структуры, раз всего 2 вида кадра.
Ну а с этим:
Цитата: Kogrom
Ещё можно использовать 2 структуры, раз всего 2 вида кадра.
оно конечно можно, только этих структур сейчас и так 3 шт., две для запроса(запросы разные, вторая структура дополняется полем) и одна для ответа..т.е. получится уже пять структур - это меня не устраивает...