最終更新日 2025年11月14日
■この記事の概要
C言語において、switch文内でのreturn後にbreak文を記述する必要性を検討し、コードの可読性向上のためのベストプラクティスを解説。
実行されないbreak文を省略し、効率的なコードの書き方を示します。
■何をしてるか1秒でわかるコードに
typedef enum { R, G, B } Color;
char *f1(Color c) {
switch (c) {
case R: return "赤";
case G: return "緑";
case B: return "青";
default: return "未知の色";
}
}caseがbreak で終わっていないので
下記2大コーディングルールに違反します。
MISRA-C:2012 R16.3 違反
CERT-C MSC17-C. 違反
※CERT-C MSC01-C 本家では break の無い例も紹介されている。
■ルールを守ってbreakを追加してみる
warning: ‘break’ will never be executed
警告:breakに制御は来ません
[-Wunreachable-code-break]
char *f2(Color c) {
switch (c) {
case R: return "赤"; break;
case G: return "緑"; break;
case B: return "青"; break;
default:
return "未知の色"; break;
}
}⇒break が五月蠅くなった。
■さらに関数出口一つルールに従うと
char *f3(Color c) {
char *ret ;
switch (c) {
case R:
ret = "赤";
break;
case G:
ret = "緑";
break;
case B:
ret = "青";
break;
default:
ret = "未知の色";
break;
}
return ret ;
}