之前有人问过这个问题,但是当移动到具有相反字节序的平台时(在这种情况下从大到小),我仍然对如何处理位域结构感到有些困惑。所以如果我有这个:
typedef struct
{
unsigned short a :5;
unsigned short b :1;
unsigned short c :5;
unsigned short d :5;
} protocol_type;
typedef union
{
protocol_type cmd;
unsigned short word;
}protocol_cmd_type;
处理这个问题的正确方法是这样吗?
typedef struct
{
unsigned short d :5;
unsigned short c :5;
unsigned short b :1;
unsigned short a :5;
} protocol_type;
typedef union
{
protocol_type cmd;
unsigned short word;
}protocol_cmd_type;
或者是其他东西?
这就是我所做的,但它并没有给出我期望的结果。然而,这段代码还有其他问题,所以我不确定上面是否真的错了。希望在这里获得洞察力,以便我可以将这部分从列表中删除。
事实上,我仍然需要让代码在两个平台上都能正常工作,所以我会围绕#defines 进行包装,但我不想在这里把东西弄得乱七八糟。