【C言語】
switch(enum式)と記述するとcase抜けを防げる

warning: enumeration value ‘x’ not handled in switch

警告:列挙値 ‘x’ がswitch文で処理されません。
[-Wswitch]

■1.case 桃太郎:を忘れた?

#include    <stdio.h>
typedef enum {
    桃太郎,犬,猿,雉,
} 桃組;
char    *鳴き声(桃組    家来){
    switch(家来){
    case 犬:    return  "ワンワン" ;
    case 猿:    return  "ウキーッ" ;
    case 雉:    return  "ケーン";
    }
}
int main(void){
    printf("%s\n",鳴き声(犬));
    printf("%s\n",鳴き声(猿));
    printf("%s\n",鳴き声(雉));
    printf("%s\n",鳴き声(桃太郎));
}

最近のコンパイラはswitch(enum式)と記述すると
case の抜けを指摘してくれます。
enum型の全てのメンバーがcase 文に記述されているか、
default節が記述されているか、
確認してください。

■2./*何もしない*/追加だけでは不十分

#include    <stdio.h>
typedef enum {
    桃太郎,犬,猿,雉,
} 桃組;
char    *鳴き声(桃組    家来){
    switch(家来){
    case 犬:    return  "ワンワン" ;
    case 猿:    return  "ウキーッ" ;
    case 雉:    return  "ケーン";
    
    case 桃太郎:
    default:
        ;   //何もしない    
    }
}

/*何もしない*/だけでは正常経路か異常経路かわかりません。


■3.桃太郎他を正常経路と明示する(推奨)

#include    <stdio.h>
#include    <assert.h>
typedef enum {
    桃太郎,犬,猿,雉,
} 桃組;
char    *鳴き声(桃組    家来){
    switch(家来){
    case 犬:    return  "ワンワン" ;
    case 猿:    return  "ウキーッ" ;
    case 雉:    return  "ケーン";
    
    case 桃太郎:
    default:
        //ここにも制御が来るが、何もせず下へ行く  
    }
    return  "";//想定外は無言を返す
}

制御が来る事を明示するコメントを記述する。

■4.桃太郎他を異常経路と明示する(推奨)

#include    <assert.h>
#include    <stdio.h>
typedef enum {
    桃太郎,犬,猿,雉,
} 桃組;
char    *鳴き声(桃組    家来){
    switch(家来){
    case 犬:    return  "ワンワン" ;
    case 猿:    return  "ウキーッ" ;
    case 雉:    return  "ケーン";
    
    case 桃太郎:
    default:
        //ここには制御は来ない、来たらBUG
        assert(0);//想定外検出    
    }
}

制御が来ない事を明示するコメントを追加し、
プログラムの種類に応じて assert()や、エラー時処理を追加する。

参考:

MSC01-C. 論理的な完全性を追求する

https://www.jpcert.or.jp/sc-rules/c-msc01-c.html