この質問は以前に尋ねられましたが、反対のエンディアン (この場合は大きいから小さい) のプラットフォームに移行するときにビットフィールド構造を処理する方法について、まだ少し混乱しています。だから私はこれを持っている場合:
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 をラップする必要がありますが、ここで混乱させたくありませんでした。