Рейтинг:
1
OriginalGriff
Не очень хорошая идея, совсем нет.
Да, вы можете это сделать, при условии, что два дочерних класса находятся в отдельных файлах. Но... это очень плохая идея, поскольку две структуры могут иметь разные "физические" размеры (в данном случае они этого не делают, так как первая будет "округлена" до кратного 32 битам в любом случае). А когда у вас будут разные размеры, вы начнете возиться с данными, которые находятся вне структуры, когда вы ее используете. Это может привести к очень непредсказуемым результатам, от случайного повреждения данных до сбоев приложений.
Не делай этого. Просто потому, что вы можете что-то сделать, не означает, что вы должны...
saide_a
на самом деле я хочу этот другой физический размер
OriginalGriff
Нет, не надо - это плохая идея. Если вы хотите разные размеры, то называйте их разными вещами. В противном случае вы получите непредсказуемые эффекты, которые очень трудно проработать и исправить позже.
Почему ты думаешь, что хочешь этого?
saide_a
У меня есть пакет, и моя реализация пакета отличается в моих дочерних классах
и в моем базовом классе я тоже использовал этот пакет,
тогда я собираюсь определить это следующим образом
#define FRAME_PACKET_TYPE(buff) (*((uint8_t*)&buff[0]))
спасибо
OriginalGriff
Не используйте вместо этого объединение в своей структуре:
https://www.tutorialspoint.com/cprogramming/c_unions.htm
Таким образом, распределение памяти, необходимое для структуры, всегда будет правильным: это будет самое большое распределение, которое ей нужно, независимо от того, где вы его создадите.
Это также целая нагрузка менее запутанная, когда вы читаете ее обратно для обслуживания через шесть месяцев...