enum-type引数を持つスイッチが定数の一部を見逃し、デフォルトの分岐がない場合、gcc-Wswitch
オプションは次のような警告を発生させます。
warning: enumeration value 'WHATEVER' not handled in switch
ただし、多くのスイッチは次のようなものです。
enum foo {
FOO_ONE,
FOO_TWO,
FOO_COUNT
};
ここで、FOO_COUNTは値として表示されることはありませんが、定義され、変数に表示される可能性のある値の数を知るために使用されます。列挙型の値を使用して配列にインデックスを付けるか、ビットパッキングしているため、配列が適合するかどうかを確認する必要があります。したがって、すべての値を処理する列挙型には、この1つの定数を含めるべきではありません。その警告を維持する方法はありますが、そのような特別な値のためにそれを避けますか?つまり
switch(foo) {
case FOO_ONE:
anything;
};
警告を出す必要がありますが、:
switch(foo) {
case FOO_ONE:
anything;
case FOO_TWO:
anything_else;
}
すべきではありません。