e501.c

三項演算子と enum の型


コード例: /* ある目的で使われる制御コード */ enum EA { EA1 = 0 } ; /* EA 型とは違う目的で使われる制御コード */ enum EB { EB1 = 3 } ; int func(int i) { return i ? EA1 : EB1 ; /* 異なる enum 型を使用しています */ }
解説: この func 関数を呼ぶ人は、どんな enum 型を期待するでしょうか? EA 型、EB 型、もしくはそのどちらでもないかもしれません。 このようなミスは、enum の使用率が一般的に低いこともあり、 あまり見掛けません。 しかし、印象が薄いため、トレース時に見逃しやすい例でしょう。 (命名規則に気を付けると、ある程度は防げます)