e5784.c

ビットフィールド範囲外の値との==,!=比較

/* 警告:   A:e5784: 4bitの符号有ビットフィールドと15(5bitの値)の比較は常に偽になります  */

struct X { int b : 4; }; void func(X *x) { /* 符号有で15を表すためには5bit必要なので、 4bitの符号付きフィールドでは表現不可 */ if(x->b == 0xF) { … } }
解説 ビットフィールドで表す事が出来る値の範囲外の値と比較しているため、 常に同じ結果になり意味がありません。比較値かビットフィールドのサイズを間違えているのかもしれません。