http-paser是一個用c編寫的http消息解析器,地址:https://github.com/nodejs/http-parser,目前版本2.9node
今天用gcc 7.3.0編譯其2.1版本時,編譯器報錯以下:git
找到對應的代碼:github
http-parser的編譯同時打開了-Wall -Wextra -Werrorblog
-Wimplicit-fallthrough,是C++17標準引入的警告選項,由於這個地方沒有break。若是編譯時有編譯選項-Wextra,該編譯選項將添加。-Werror將警告視爲錯誤報出。ci
參考文檔:文檔
https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/編譯器
具體文檔介紹可參考,man gccit
備註:編譯
最新版本編譯沒有問題,由於代碼改成這樣了ejs
至於爲何改成這樣就不報錯了,由於默認Wimplicit-fallthrough=3的時候,加上/* fall through */是能夠繞過的。詳細請見gcc文檔。
話說,直接添加一個下面的處理語句,再break不更好嗎?代碼複用到了極致了。