ビットフィールド
C言語で構造体の中に整数の個々のビットへ名前を付ける仕組み。読みやすいが、メモリ上の配置はほとんど規定されていない。
unsigned ready : 1; と書くと構造体のメンバが1ビット幅になり、reg.ready = 1 のように普通の代入として扱える。ハードウェアレジスタを記述するときには魅力的に見える。ただし規格はビットの並び順、パディング、背後の格納単位をコンパイラに委ねているため、同じ構造体でもコンパイラやエンディアンの異なるアーキテクチャ間でレイアウトが変わりうる。
書き込みは常に読み出し・変更・書き込み(read-modify-write)になるので、読み出しでクリアされるステータスビットを壊すこともある。CMSISや多くのベンダーヘッダがマスクとシフトを使うのも、MISRA Cがビットフィールドを強く制限するのもこのためである。