switchとenum
switch文でenumを使っていると、caseが足りなかったりおかしなのがあったりすると警告を出してくれる。
enum NUM { ONE, TWO, THREE, FOUR }; int main() { enum NUM n = ONE; switch(n) { case ONE: case TWO: break; case 10: break; } return 0; }
コンパイル
$ gmake CFLAGS=-Wall enum cc -Wall enum.c -o enum enum.c: In function 'main': enum.c:9: warning: enumeration value 'THREE' not handled in switch enum.c:9: warning: enumeration value 'FOUR' not handled in switch enum.c:13: warning: case value '10' not in enumerated type 'enum NUM'
便利。
もちろん、defautlがあると警告は出してくれない。なんで、なんでもかんでもdefault付ければ良いというわけでもない。