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; }
みたいなのも普通にできます。