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