======enumを活用する====== =====enumとは===== enumは、列挙型という型を作ります。 記法としては、 typedef enum{ rekkyo_1, rekkyo_2, rekkyo_3, }t_rekkyo; //型を作る t_rekkyo r1,r2; //t_rekkyo 形のr1 r2 という変数を作る という感じで、列挙型の型の宣言と、変数の宣言ができます。 また、列挙されたメンバーに数字を当てはめておく事もできます。 typedef enum{ false = 0, true = 1, }t_boolean; t_boolean flag1, flag2; こんな感じです。 当然、上のt_boolean 型の変数flag1, flag2が宣言された状態で flag1 = true; flag2 = flag1; とすれば、flag2にはtrueが入ります。 内部的には数字なので当然、 if(flag1){ //flag1が立っていた時の処理 }else{ //flag1が立っていなかった時の処理 } という書き方ができます。 ただし、読みやすいように if(flag1 == true){ }else{ } と書いた方が良いでしょう。 =====使い道===== true,falseをメンバーにしてフラグ用に使うのが、一番多いと思いますが、本来の使い方ではありません。 例えばマイクロマウスで、今の状態を示す変数をつくろうと思った時に、 int state = 0; /* 0 : 人の手で操作中(メニュー) 1 : 探索中 2 : 最短走行中 3 : クラッシュ */ なんて風にやっていた所を、 typedef enum{ menu, //メニュー操作 search, //探索 fast_run, //最短走行 crash, //ぶつかった }t_machine_state; t_machine_state state; みたいに書く事ができます。 見やすいプログラムにすることでバグの発生を抑えるのが、enumの正しい使い方です。 menuの項目なんかも、列挙型で管理するとやりやすいと思います。 分かっているとは思いますが、 switch(state){ case menu: //・・・・ break; case search: //・・・・ break; case fast_run: //・・・・ break; case crash: //・・・・ break; } みたいなのも普通にできます。