2013/12/11

C言語Tips2 enum使え!

開始モード、実行中モード、終了モードとかあって、それぞれ
int mode;

mode = 0;

mode = 1;

if(mode == 1) {
    なんちゃら
}

とかしてませんか?







そういえば、文字で比較しているプログラムも見たことがあるような……

char mode;

mode = 's';

if(mode == 's') {
 なんちゃら
}

もう少しましだと

#define START_MODE 0
#define EXECUTING_MODE 1
#define FINISH_MODE 2

int mode;

mode = START_MODE;

mode = EXECUTING_MODE;

if(mode == EXECUTING_MODE) {
    なんちゃら
}

これでもいいんですが、普通は

enum Mode { MODE_START, MODE_EXECUTING, MODE_FINISH };

enum Mode mode;

mode = MODE_START;

mode = MODE_EXECUTING;

if(mode == MODE_EXECUTING) {
    なんちゃら
}

とします。こうすると、

mode = 0;

とかするとコンパイラがエラーを吐いてくれます。安全ですね!

ところでこの名前付けにもポイントがあります。

enum 集合の名前 { 集合の要素たち };
と書きますが、この集合の要素達の名前は「集合の名前_要素の名前」とするのです。
そうすることで、集合が複数になった場合も区別できます。

0 件のコメント:

コメントを投稿