nginxのmake時にエラーが発生する
nginx1.18.0 をCentOS上でmakeした際に以下のエラーが…
1 2 3 4 5 6 |
/Storeaming/nginx-rtmp-module/ngx_rtmp_eval.c: In function ‘ngx_rtmp_eval’: /Storeaming/nginx-rtmp-module/ngx_rtmp_eval.c:160:17: error: this statement may fall through [-Werror=implicit-fallthrough=] switch (c) { ^~~~~~ /Storeaming/nginx-rtmp-module/ngx_rtmp_eval.c:172:13: note: here case ESCAPE: |
原因
switch文の case 毎の最終行にbreakがないというのが主な理由です。
これはgccの7以降からの仕様だそうです。
対処法
単にbreakの書き忘れなら付ければいいのですが、意図的に行いたい場合もありますよね。
その場合は、
1 |
/* fall through */ |
を末尾に追加して、あえてbreakを書かないという旨を記載しておきます。
この方が可読性も向上して良いですね。
nginxの場合は、159行目から始まるcaseの末尾に以下のように入れます。
1 2 3 4 5 6 7 8 9 10 11 |
case NORMAL: switch (c) { case '$': name.data = p + 1; state = NAME; continue; case '\\': state = ESCAPE; continue; } /* fall through */ |
編集後、再びmakeをすると、問題なく通るかと思います。
今回のブログ曲
今回投稿中に聴いていた曲はこちら