我想直接将一个byte array
分配给C中的结构。协议看起来像这样(是的,我知道这不是编译,因为flexlible数组只允许作为结构的最后一个元素)
struct telegram{
uint8_t controll;
uint16_t src_addr;
uint16_t dst_addr;
uint8_t is_group_addr :1;
uint8_t routing_cnt :3;
uint8_t data_len :3;
uint8_t data[];
uint8_t chksum;
};
我该怎么解决?我喜欢我可以使用struct直接访问协议中的字段。简单的方法是说data[]
的最后一个元素是校验和,但我想知道是否有更好/更漂亮的方法来做到这一点。