この方法で、いくつかのビットを 1 バイトにパックする必要があります。
struct
{
char bit0: 1;
char bit1: 1;
} a;
if( a.bit1 ) /* etc */
また:
if( a & 0x2 ) /* etc */
ソース コードの明快さから、ビットフィールドの方がすっきりしていることは明らかです。しかし、どちらのオプションがより高速ですか? 速度差はあっても大差ないのはわかっていますが、どれも使えるので速い方がいいです。
一方、ビットフィールドがプラットフォーム間で同じ順序でビットを配置することが保証されていないことを読んだので、コードを移植できるようにしたいと考えています。
注: 「プロフィール」に回答する予定がある場合は、そうしますが、私は怠け者なので、誰かがすでに回答を持っている場合は、はるかに優れています。
コードが間違っている可能性があります。必要に応じて修正できますが、この質問の要点を覚えておいて、回答してみてください。