typedef union {
u_int32_t command;
struct {
unsigned none : 2;
unsigned reg : 6;
unsigned function : 3;
unsigned device : 5;
unsigned bus : 8;
unsigned reserve : 7;
unsigned enabled : 1;
} p;
} pci_param;
ビット構造体は、上位から定義するか下位から定義するか、コンパイラーによって差があるので注意が必要。
殆どのC/C++コンパイラーは、この機能を重視していないためか、非効率なコードを出力する。更には、この処理にバグがあるコンパイラーも存在した。
また、スレッドセーフな動作をするのかどうかという、コンパイラーの仕様に基づく問題点がある。
コードサイズや速度などを重視する場合は、ビットフィールドは用いず、ビット演算などを使う方が無難である。